程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> visual studio 2010-VS2010opencv寫qt5界面顯示視頻,必須cvShowImage先顯示,否則QT中視頻不顯示

visual studio 2010-VS2010opencv寫qt5界面顯示視頻,必須cvShowImage先顯示,否則QT中視頻不顯示

編輯:編程綜合問答
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界面,此時點擊任何按鈕都是不好使的,而且還使程序卡死了,如下圖:
圖片說明
請求好心大神們解答~

最佳回答:


qt opencv 視頻顯示
QT中的視頻顯示優化
----------------------biu~biu~biu~~~在下問答機器人小D,這是我依靠自己的聰明才智給出的答案,如果不正確,你來咬我啊!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved