刚学习Qt,想利用opencv打开摄像头并将视频加载在Qt窗体中
1 void QtGUIEx::on_openCamera_clicked() 2 { 3 cv::VideoCapture cap(0); 4 if (!cap.isOpened()) 5 { 6 return; 7 } 8 9 cv::Mat frame; 10 cap >> frame; 11 //cv::namedWindow("video"); 12 while(!frame.empty()){ 13 cv::cvtColor(frame, frame, CV_BGR2RGB); 14 QImage qimg((const uchar*)(frame.data), frame.cols, frame.rows, QImage::Format_RGB888); 15 ui.video->setPixmap(QPixmap::fromImage(qimg)); 16 cv::waitKey(10); 17 cap >> frame; 18 } 19 }
但是只有加上注释掉的cv::namedWindow(),Qt窗口中才会显示视频。
原因不解,求指教!
遇到同样问题,请问你最后是如何解决的呢?
cv::waitKey只对opencv创建的窗体有作用(即cv::namedWindow),把该行注释掉后cv::waitKey()的暂停功能就无效了,所以qt没有足够的时间绘出图像。而qt提供有Qtimer类,用这个实现暂停功能就可以了。