VS2010opencv写qt5界面显示视频,必须cvShowImage先显示,否则QT中视频不显示

运行时界面如下:
图片说明

代码如下:

 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界面,此时点击任何按钮都是不好使的,而且还使程序卡死了,如下图:
图片说明
请求好心大神们解答~

0个回答

qt opencv 视频显示
QT中的视频显示优化
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问