I work on Win7 x64 with OpenCV and Qt Libraries and VS 2010.
I would like to open my camera with OpenCV and then to show captured frames with Qt, for example using QLabel, after converting from Mat to QImage.
I want to do this because to use the functions imshow("camera", image) and waitKey() slows down streaming camera.
This is my code:
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();
}
Webcam is opened correctly and works, But I see a white window and not the captured frames, as you can see in this image
If I uncomment: namedWindow (..), imshow(..), if(waitKey(..)
, it works (i see two windows with the same images), but I show captured frames with OpenCV and this is what I want to avoid.
My question is: I'm wrong in something?? I do not know, the conversion from Mat to Qimage is wrong ??.. Or, cannot I display captured frames only with Qt?
Thank you!