我在Win7 x64上使用OpenCV和Qt库以及VS 2010。
我想使用OpenCV打开我的相机,然后将捕获的帧转换成QImage并显示在Qt中,例如使用QLabel。
我之所以这样做,是因为使用函数imshow("camera", image)和waitKey()会减慢流式相机的速度。
以下是我的代码:
int main () {
QApplication a(argc, argv);
QLabel myLabel;
VideoCapture cap(0);
//namedWindow(c"camera", 1);
for (;;) {
cap >> image;
//conversion from Mat to QImage
Mat dest;
cvtColor(image, dest,CV_BGR2RGB);
QImage image1= QImage((uchar*) dest.data, dest.cols, dest.rows, dest.step, QImage::Format_RGB888);
//show Qimage using QLabel
myLabel.setPixmap(QPixmap::fromImage(image1));
myLabel.show();
//imshow("camera",image);
//if (waitKey(30)>= 0) break;
}
return a.exec();
}
摄像头已被正确打开并工作,但我看到的是一个白色窗口而不是捕获的帧,如下图所示:
![enter image description here](https://istack.dev59.com/qlAI5.webp)
namedWindow (..), imshow(..), if(waitKey(..)
,那么它可以正常工作(我会看到两个具有相同图像的窗口),但我想用OpenCV显示捕获的帧,这就是我想要避免的。我的问题是:我做错了什么吗??我不知道,Mat转换为Qimage是错误的吗??还是说,我不能仅使用Qt显示捕获的帧?
谢谢!
Object::connect:在c:\ ...
(我的“main_proiezione.cpp”文件路径)中找不到QWidget :: updatePicture()插槽。对不起,我对编程不是很精通。 - Cristina1986