2014-09-27 41 views

回答

1

我寫了一個代碼片段,用於將視頻傳輸到cv::Mat,但我希望你能理解主要想法,你應該這樣做。

QPixmap win = QPixmap::grabWindow(QApplication::desktop()->winId()); 
    QImage scr = win.toImage().scaled(640,480); 
    QImage screen = scr.convertToFormat(QImage::Format_RGB888); 
    cv::Mat tmp(screen.height(),screen.width(),CV_8UC3,(uchar*)screen.bits(),screen.bytesPerLine()); 
    cvtColor(tmp, tmp,CV_BGR2RGB); 

現在cv::Mat包含此圖像。

實施例:

QPixmap okno = QPixmap::grabWindow(QApplication::desktop()->winId()); 
QImage scr = okno.toImage().scaled(640,480); 
QImage screen = scr.convertToFormat(QImage::Format_RGB888); 
cv::Mat tmp(screen.height(),screen.width(),CV_8UC3,(uchar*)screen.bits(),screen.bytesPerLine()); 
cvtColor(tmp, tmp,CV_BGR2RGB); 
cv::namedWindow("d"); 
cv::imshow("d",tmp); 

imshow節目cv::Mat正常。

+0

獲取錯誤,對'cv :: fastFree(void *)'的未定義引用, 未定義的引用'cv :: Mat :: deallocate()' – user3747190 2014-09-27 15:28:24

+0

@ user3747190這對我的示例代碼沒有問題,你的項目出現了問題,而且google給出的所有鏈接都表示鏈接庫存在問題。 – Chernobyl 2014-09-27 15:38:46