qq_21019127 2015-10-30 08:40 采纳率: 100%
浏览 3081

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:43
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程