運行時界面如下:
代碼如下:
void QT5video::showvideo()
{
ui.startBtn->setEnabled(false);
ui.closeBtn->setEnabled(true);
//聲明IplImage指針
IplImage* pFrame = NULL;
IplImage * return_frame;
//獲取攝像頭
CvCapture* pCapture = cvCreateCameraCapture(0);
//創建窗口
cvNamedWindow("監控視頻",1);
// cvNamedWindow("缺陷監測", 1);
//顯示視屏
while(1)
{
pFrame=cvQueryFrame( pCapture );
if(!pFrame)break;
IplImage *img = pFrame;
QImage qImage=QImage((const uchar*)img->imageData, img->width, img->height,img->widthStep, QImage::Format_RGB888).rgbSwapped();
ui.label_JK->setPixmap(QPixmap::fromImage(qImage));
return_frame=ControlsCountours(pFrame);
IplImage *return_img = return_frame;
QImage return_qImage=QImage((unsigned char * )return_img->imageDataOrigin,return_img->width,return_img->height,return_img->widthStep,QImage::Format_RGB888);
ui.label_QX->setPixmap(QPixmap::fromImage(return_qImage,0));
cvShowImage("監控視頻",pFrame);
// cvShowImage("缺陷監測",return_frame);
char c=cvWaitKey(330);
if(c==27)break;
}
//cvWaitKey(0);
cvReleaseCapture(&pCapture);
cvReleaseImage(&return_frame);
cvDestroyWindow("監控視頻");
//cvDestroyWindow("缺陷監測");
}
要是把 cvNamedWindow("監控視頻",1); cvShowImage("監控視頻",pFrame); cvDestroyWindow("監控視頻"); 這三條語句全部注釋掉的話,那麼運行之後只會出現QT界面,此時點擊任何按鈕都是不好使的,而且還使程序卡死了,如下圖:
請求好心大神們解答~
qt opencv 視頻顯示
QT中的視頻顯示優化
----------------------biu~biu~biu~~~在下問答機器人小D,這是我依靠自己的聰明才智給出的答案,如果不正確,你來咬我啊!