我正在实现类似小标签的东西,以显示鼠标随附的图像细节。我完成了鼠标移动事件信号并使用opencv放大了图像处理。
接收鼠标移动事件并更新标签位置和图像数据的插槽。
void CameraView::updateMouseCurcor()
{
if(superres_mode)
{
label_x=ui->frameLabel->getMouseCursorPos().x();
label_y=ui->frameLabel->getMouseCursorPos().y();
// opencv based function to produce the zoom in detailed image src
toyFuncion(input,output);
label_x+=ui->label->width();
ui->label_3->setGeometry(label_x,label_y,WINDOW_WIDTH,WINDOW_HEIGHT);
smallPic = QImage((const unsigned char*)(output.data),output.cols,output.rows,output.cols*output.channels(),QImage::Format_RGB888);
ui->label_3->setPixmap(QPixmap::fromImage(smallPic));
}
}
问题是,带有图像的小标签不会出现。
如果我发表评论label_3->setPixmap(QPixmap::fromImage(smallPic));
我可以正确地看到我的标签文字。
我已经调试并检查小图像数据是否完全正常。我尝试在ui->label->setPixmap(QPixmap::fromImage(smallPic));
旁边的另一个标签中显示它
如果我注释掉label_3->setPixmap(QPixmap::fromImage(smallPic));
并在构造函数中设置标签,如:
cv::Mat temp;
cv::resize(src,temp,cv::Size(WINDOW_WIDTH,WINDOW_HEIGHT));
smallPic = QImage((const unsigned char*)(temp.data),temp.cols,temp.rows,temp.cols*temp.channels(),QImage::Format_RGB888);
ui->label_3->setPixmap(QPixmap::fromImage(smallPic));
ui->label_3->setScaledContents(true);
图像显示并用我的鼠标移动得很好。
我想知道我的实施方式出了什么问题,标签的控制层如何以及如何同时更新标签的几何图形和图像。
答案 0 :(得分:0)
我认为你的问题就在这里
ui->label_3->setGeometry(label_x,label_y,WINDOW_WIDTH,WINDOW_HEIGHT);
而不是WINDOW_WIDTH和WINDOW_HEIGHT尝试给出图像的宽度和高度。设置标签的pixmap后设置geomtery。