【異常】Cannot queue arguments of type ‘cv::Mat‘
阿新 • • 發佈:2021-01-15
技術標籤:Qt/C++異常筆記qt
文章目錄
異常描述
多執行緒傳遞cv::Mat,編譯時通過,執行時報錯,導致影象無法成功傳遞;
QObject::connect: Cannot queue arguments of type 'cv::Mat'
(Make sure 'cv::Mat' is registered using qRegisterMetaType().)
異常原因
訊號槽佇列中的資料型別必須是系統能識別的元型別,如果不是,則需要用qRegisterMetaType()註冊。
解決方法
在connect裡面加上屬性 Qt::DirectConnection
改之前:
connect(m_CurCam,&DalsaCam::SigGrabImage,this,&MainWindow::SlotGrabImage);
改之後:
connect(m_CurCam,&DalsaCam::SigGrabImage,this,&MainWindow::SlotGrabImage,Qt::DirectConnection);
測試通過
開發環境
Author:Lizhifun
OS:Windows 10 家庭中文版
Compiler:Microsoft Visual C++ Compiler 15.9.28307.1259(amd64)
Kit:Desktop Qt 5.14.2 MSVC2017 64bit
Qt Creator:4.11.1