#include "Hd_VirtualCamera.h" #include QQueue> queuePic; QMutex* n_mutex = new QMutex(); Hd_VirtualCamera::Hd_VirtualCamera() { //m_thread = new MyThread; //m_mutex = new QMutex(); } Hd_VirtualCamera::~Hd_VirtualCamera() { if (n_mutex) { delete n_mutex; n_mutex = nullptr; } qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << " delete success!"; } bool Hd_VirtualCamera::readData(std::vector& mat, QByteArray& data) { Q_UNUSED(data) int cnt = 0; while (queuePic.empty()) { cnt++; QThread::msleep(10); if (cnt > 3000) { qCritical() << " [ error] " << __FUNCTION__ << " line:" << __LINE__ << " srcImage is null"; return false; } } n_mutex->lock(); vector dstMat = queuePic.dequeue(); n_mutex->unlock(); //for (int i=0;i& mat, QByteArray& data) { Q_UNUSED(mat) cameraName = data.toStdString(); return true; } bool Hd_VirtualCamera::initParas(QByteArray&n) { return true; } bool Hd_VirtualCamera::run()//����� { QThread::msleep(1000); n_mutex->lock(); if (cameraName == "25D-1" || cameraName == "25D-2") { vector mats; mats.push_back(cv::imread("I:\\952Code\\CODES\\16H\\A2250709-162941554918413\\A2250709-1629415549184132.5D-H-2_16-31-32-65_Count0.bmp", -1)); mats.push_back(cv::imread("I:\\952Code\\CODES\\16H\\A2250709-162941554918413\\A2250709-1629415549184132.5D-H-2_16-31-32-65_Count1.bmp", -1)); mats.push_back(cv::imread("I:\\952Code\\CODES\\16H\\A2250709-162941554918413\\A2250709-1629415549184132.5D-H-2_16-31-32-65_Count2.bmp", -1)); queuePic.enqueue(mats); } else { vector mats; mats.push_back(cv::Mat(15000,15000,CV_8UC3,cv::Scalar(0,0,255))); queuePic.enqueue(mats); } n_mutex->unlock(); return true; } Hd_VirtualCamera* create(){ qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << "Hd_VirtualCamera create success!"; return new Hd_VirtualCamera; } void destory(Hd_VirtualCamera* ptr){ if (ptr) { delete ptr; ptr = nullptr; } qDebug() << "[info] " << __FUNCTION__ << " line:" << __LINE__ << "Hd_MvCamera_module destory success!"; }