diff --git a/BaseModules/Hd_MvCameraTL_module/CMakeLists.txt b/BaseModules/Hd_MvCameraTL_module/CMakeLists.txt deleted file mode 100644 index e86c65b8..00000000 --- a/BaseModules/Hd_MvCameraTL_module/CMakeLists.txt +++ /dev/null @@ -1,70 +0,0 @@ -# 获å�–获å�–当å‰�目录å�� -get_filename_component(CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} NAME) -string(TIMESTAMP RUN_TIME) -message( " model start : " ${CURRENT_FOLDER}:${RUN_TIME}) - -set(DLL_NAMES "mvs" "opencv") -foreach(child ${DLL_NAMES}) - LIST(APPEND ENV_INCLUDE ${${child}_include}) - LIST(APPEND ENV_LIB ${${child}_lib}) - LIST(APPEND ENV_TARGET ${${child}_target_link}) -endforeach() -message(" ENV_INCLUDE : " ${ENV_INCLUDE} ) -message(" ENV_LIB : " ${ENV_LIB} ) -message(" ENV_TARGET : " ${ENV_TARGET} ) -include_directories( - - ${ENV_INCLUDE} - ) - -link_directories ( - ${ENV_LIB} - - ) - - -set(CMAKE_INCLUDE_CURRENT_DIR ON) -SET(CMAKE_CXX_STANDARD 11) -SET(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_AUTOMOC ON) -SET(CMAKE_AUTOUIC ON) -set(CMAKE_AUTORCC ON) - -FILE(GLOB HEAD_FILES "./*.h" ) -FILE(GLOB SRC_FILES "./*.cpp") -FILE(GLOB UI_FILES "./*.ui") - - -#find_package(Qt5 COMPONENTS Core REQUIRED) -find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) -find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) - -add_library(${CURRENT_FOLDER} SHARED - ${HEAD_FILES} - ${SRC_FILES} - ${UI_FILES} - ) - - - -set_target_properties(${CURRENT_FOLDER} PROPERTIES LINKER_LANGUAGE C - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} - ) - - -target_link_libraries(${CURRENT_FOLDER} PRIVATE - ${ENV_TARGET} - Qt${QT_VERSION_MAJOR}::Core - ) - - -# target_compile_definitions(${CURRENT_FOLDER} PRIVATE HD_AIDEMO_MODULE_LIBRARY) - - - - -string(TIMESTAMP RUN_TIME) -message( " model end : " ${CURRENT_FOLDER}:${RUN_TIME}) diff --git a/BaseModules/Hd_MvCameraTL_module/Hd_MvCameraTL_module.cpp b/BaseModules/Hd_MvCameraTL_module/Hd_MvCameraTL_module.cpp deleted file mode 100644 index c91288dd..00000000 --- a/BaseModules/Hd_MvCameraTL_module/Hd_MvCameraTL_module.cpp +++ /dev/null @@ -1,259 +0,0 @@ -#include "Hd_MvCameraTL_module.h" -#include - -QQueue queuePic; -QMutex* n_mutex = new QMutex(); -//0106 断连æ��示 -void _stdcall ExceptionCB(unsigned int nMesgType, void* pUser) { - mv_Status = "disconnect"; - qDebug() << "[Error] " << " MvCameraTL disconnects!"; -} - - -Hd_MvCameraTL_module* create() -{ - qDebug() << "[INFO] " << "Hd_MvCamera_module create success!" ; - return new Hd_MvCameraTL_module; -} - -void destory(Hd_MvCameraTL_module * ptr) -{ - if(ptr) - { - delete ptr; - ptr = nullptr; - } - qDebug() << "[INFO] " << "Hd_MvCamera_module destory success!"; -} -void __stdcall ImageCallBackEx(unsigned char* pData0, MV_FRAME_OUT_INFO_EX* pFrameInfo0, void* pUser0) -{ - Q_UNUSED(pUser0) - double time_Start = (double)clock(); - cv::Mat srcImage; - //qDebug() << "[info]" << __FUNCTION__ << " line:" << __LINE__ << "--- start"; - if (pFrameInfo0) - { - //获å�–的是å�•通é�“ç�°åº¦å›¾ - if (pFrameInfo0->enPixelType == PixelType_Gvsp_Mono8)//获å�–当å‰�采集到的图åƒ�æ ¼å¼� - { - srcImage = cv::Mat(pFrameInfo0->nHeight, pFrameInfo0->nWidth, CV_8UC1, pData0); - } - //获å�–的是RGB8图 - else if (pFrameInfo0->enPixelType == PixelType_Gvsp_RGB8_Packed) - { - srcImage = cv::Mat(pFrameInfo0->nHeight, pFrameInfo0->nWidth, CV_8UC3,pData0); - cvtColor(srcImage, srcImage, COLOR_RGB2BGR); - } - else if (pFrameInfo0->enPixelType == PixelType_Gvsp_BGR8_Packed) - { - srcImage = cv::Mat(pFrameInfo0->nHeight, pFrameInfo0->nWidth, CV_8UC3, pData0); - - //cvtColor(srcImage, srcImage, COLOR_RGB2BGR);//导致异色 - } - //获å�–的是yuv或bayer图 - else if (pFrameInfo0->enPixelType == PixelType_Gvsp_YUV422_Packed || pFrameInfo0->enPixelType == PixelType_Gvsp_BayerRG8) - { - MvGvspPixelType enDstPixelType = PixelType_Gvsp_Undefined; - enDstPixelType = PixelType_Gvsp_BGR8_Packed; - unsigned int nConvertDataSize = pFrameInfo0->nWidth * pFrameInfo0->nHeight * 3; - unsigned char* pConvertData = (unsigned char*)malloc(nConvertDataSize); - if (NULL == pConvertData) - { - printf("malloc pConvertData1 fail!\n"); - m_flag = true; - srcImage = cv::Mat(5, 5, CV_8UC1).setTo(0); - n_mutex->lock(); - queuePic.append(srcImage); - n_mutex->unlock(); - return; - } - MV_CC_PIXEL_CONVERT_PARAM stConvertParam = { 0 }; - stConvertParam.nWidth = pFrameInfo0->nWidth; - stConvertParam.nHeight = pFrameInfo0->nHeight; - stConvertParam.pSrcData = pData0; - stConvertParam.nSrcDataLen = pFrameInfo0->nFrameLen; - stConvertParam.enSrcPixelType = pFrameInfo0->enPixelType; - stConvertParam.enDstPixelType = enDstPixelType; - stConvertParam.pDstBuffer = pConvertData; - stConvertParam.nDstBufferSize = nConvertDataSize; - - int nRet = MV_CC_ConvertPixelType(handle, &stConvertParam); - if (MV_OK == nRet) - { - srcImage = cv::Mat::zeros(cv::Size(pFrameInfo0->nWidth, pFrameInfo0->nHeight), CV_8UC3); - memcpy(srcImage.data, stConvertParam.pDstBuffer, nConvertDataSize); - //Mat mysrcImage = cv::Mat(mypFrameInfo->nHeight, mypFrameInfo->nWidth, CV_8UC3, stConvertParam.pDstBuffer); - //mysrcImage.copyTo(srcImage); - //mysrcImage.release(); - stConvertParam = { 0 }; - } - else - { - srcImage = cv::Mat(0, 0, CV_8UC3).setTo(0); - } - if (pConvertData) - { - free(pConvertData); - pConvertData = NULL; - } - } - } - if(!srcImage.empty()) - { - m_flag = true; - n_mutex->lock(); - queuePic.append(srcImage); - n_mutex->unlock(); - //统计图片æˆ�åƒ�æ—¶é—´ - } - else - { - srcImage = cv::Mat(5, 5, CV_8UC1).setTo(0); - n_mutex->lock(); - queuePic.append(srcImage); - n_mutex->unlock(); - } - srcImage.release(); - double time_End = (double)clock(); - qDebug() << "[INFO] " "image pic:" << index++ << " srcImage Exist,Time:" << (time_End - time_Start) << "ms" << "--CameraName:" << QString::fromStdString(Username); - - pData0 = { 0 }; -} -//æ�œç´¢æ‰€æœ‰è®¾å¤‡ -int SearchDevice() -{ - memset(&m_stDevList, 0, sizeof(MV_CC_DEVICE_INFO_LIST)); - - // ch:枚举å­�网内所有设备 | en:Enumerate all devices within subnet - int nRet = MV_CC_EnumDevices(MV_GIGE_DEVICE || MV_USB_DEVICE, &m_stDevList); - for(int i=0; iSpecialInfo.stGigEInfo.chSerialNumber; - string serialNumber = static_cast((LPCSTR)name); - if(Username==serialNumber) - { - index=i; - break; - } - } - if (MV_OK != nRet) - { - return 0; - } - return -1; -} -Hd_MvCameraTL_module::Hd_MvCameraTL_module() -{ - //m_thread = new MyThread; - //m_mutex = new QMutex(); -} - -void CloseDevice() -{ - MV_CC_StopGrabbing(handle); - MV_CC_CloseDevice(handle); - MV_CC_DestroyHandle(handle); -} -Hd_MvCameraTL_module::~Hd_MvCameraTL_module() -{ - CloseDevice(); - if(n_mutex) - { - delete n_mutex; - n_mutex = nullptr; - } - - qDebug() << "[INFO] " << " delete success!"; -} - -bool Hd_MvCameraTL_module::sendData(std::vector &mat,QByteArray &data) -{ - if (data == "connect") - { - data = mv_Status; - return true; - } - - if(queuePic.empty()) - { - qCritical() << " [Error] " << " srcImage is null"; - return false; - } - n_mutex->lock(); - cv::Mat dstMat = queuePic.dequeue(); - n_mutex->unlock(); - mat.push_back(dstMat); - qCritical() << " [Error] " << " get image"; - - return true; -} - - -bool Hd_MvCameraTL_module::reciveData(std::vector &mat,QByteArray &data) -{ - Q_UNUSED(mat) - m_flag = false; - Username= data.toStdString(); - return true; -} - -bool Hd_MvCameraTL_module::initParas(QByteArray&) -{ - SearchDevice(); - unsigned char* serialNumber=m_stDevList.pDeviceInfo[index]->SpecialInfo.stGigEInfo.chSerialNumber; - string userName = static_cast((LPCSTR)serialNumber); - qDebug() << "[INFO] " << " start"<<"--UserName:"<lock(); - if(queuePic.size() > 0) - result = true; - n_mutex->unlock(); - } - catch (QString ev) - { - qDebug() << "[Error] " << " ev:" << ev ; - } - return result; -} - diff --git a/BaseModules/Hd_MvCameraTL_module/Hd_MvCameraTL_module.h b/BaseModules/Hd_MvCameraTL_module/Hd_MvCameraTL_module.h deleted file mode 100644 index b97f7380..00000000 --- a/BaseModules/Hd_MvCameraTL_module/Hd_MvCameraTL_module.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef HD_MVCAMERATL_MODULE_H -#define HD_MVCAMERATL_MODULE_H -#include -#include -#include -#include -#include -#include -#include - -#include "base.h" - -using namespace cv; -using namespace std; -#pragma execution_character_set("utf-8") - -static QByteArray mv_Status = "connected";//0106 新增相机断è�”报警 -static long long index=0; //相机åº�å�· -static void* handle; -static string Username=""; -static bool m_flag = false; -static MV_CC_DEVICE_INFO_LIST m_stDevList;//相机设备 - -class Hd_MvCameraTL_module :public Base -{ -public: - Hd_MvCameraTL_module(); - virtual ~Hd_MvCameraTL_module(); - bool sendData(std::vector&,QByteArray&); - bool reciveData(std::vector&,QByteArray&); - bool initParas(QByteArray&); - bool run(); -private: - //MyThread *m_thread = nullptr; - //QMutex* m_mutex; - - -}; - -extern "C" -{ -Q_DECL_EXPORT Hd_MvCameraTL_module * create(); -Q_DECL_EXPORT void destory(Hd_MvCameraTL_module * ptr); -} - -#endif // HD_MVCAMERATL_MODULE_H -//Hd_MvCameraTL_module diff --git a/BaseModules/Hd_MvCameraTL_module/base.h b/BaseModules/Hd_MvCameraTL_module/base.h deleted file mode 100644 index d9a66b04..00000000 --- a/BaseModules/Hd_MvCameraTL_module/base.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef __BASECLASS_H__ -#define __BASECLASS_H__ - -#include -#include -#include -#include -#include -#include - -class Base :public QObject -{ - Q_OBJECT -public: - bool init_flag; //是å�¦åˆ�始化,false,true - std::string paras; //传输数æ�® - cv::Mat m_mat; //传输图片 - std::string moduleName; //模å�—å��ç§° -public: - Base() {} - virtual ~Base() {} - virtual bool sendData(std::vector&,QByteArray&){return true;} - virtual bool reciveData(std::vector&,QByteArray&){return true;} - virtual bool initParas(QByteArray&){return true;} - virtual bool run() {return true;} -}; - - -#endif diff --git a/BaseModules/Hd_MvCamera_module_GIGE/hd_mvcamera_module.cpp b/BaseModules/Hd_MvCamera_module_GIGE/hd_mvcamera_module.cpp index fc9b61c4..38958238 100644 --- a/BaseModules/Hd_MvCamera_module_GIGE/hd_mvcamera_module.cpp +++ b/BaseModules/Hd_MvCamera_module_GIGE/hd_mvcamera_module.cpp @@ -43,7 +43,7 @@ void _stdcall ExceptionCB(unsigned int nMesgType, void* pUser) { MV_CC_CreateHandle(&handle, m_stDevList.pDeviceInfo[index]); int nRet = MV_CC_OpenDevice(handle); ////触å�‘模å¼� - MV_CC_SetEnumValue(handle, "TriggerSource", MV_TRIGGER_SOURCE_SOFTWARE); + MV_CC_SetEnumValue(handle, "TriggerSource", MV_TRIGGER_SOURCE_LINE0); MV_CC_SetEnumValue(handle, "TriggerMode", MV_TRIGGER_MODE_ON); // //加载用户集 nRet = MV_CC_SetEnumValueByString(handle, "UserSetSelector", "UserSet1"); @@ -299,8 +299,8 @@ bool Hd_MvCamera_module::initParas(QByteArray&) unsigned int nRet = MV_CC_CreateHandle(&handle, m_stDevList.pDeviceInfo[index]); nRet = MV_CC_OpenDevice(handle); ////触å�‘模å¼� - nRet = MV_CC_SetEnumValue(handle, "TriggerSource", MV_TRIGGER_SOURCE_SOFTWARE); - nRet = MV_CC_SetEnumValue(handle, "TriggerMode", MV_TRIGGER_MODE_ON); + nRet = MV_CC_SetEnumValue(handle, "TriggerSource", MV_TRIGGER_SOURCE_LINE0); + nRet = MV_CC_SetEnumValue(handle, "TriggerMode", MV_TRIGGER_MODE_OFF); // //加载用户集 nRet = MV_CC_SetEnumValueByString(handle, "UserSetSelector", "UserSet1"); if (MV_OK != nRet) diff --git a/HanddleAI/HandleAiUi-new/back/backEndController.h b/HanddleAI/HandleAiUi-new/back/backEndController.h index f7d96101..a2669e50 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndController.h +++ b/HanddleAI/HandleAiUi-new/back/backEndController.h @@ -17,5 +17,8 @@ public: ~backEndController(); signals: void sendErrorToMainwindow(backEndError); + void sendPixmapImageWidget(QPixmap img, imgWidgetShowType type,QString Name); + void sendPixmapImageWidget(QPixmap img, imgWidgetShowType type,int Index); + }; #endif \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/back/cameraController.cpp b/HanddleAI/HandleAiUi-new/back/cameraController.cpp index 160f25c8..f2446b35 100644 --- a/HanddleAI/HandleAiUi-new/back/cameraController.cpp +++ b/HanddleAI/HandleAiUi-new/back/cameraController.cpp @@ -32,6 +32,10 @@ static MV_CC_DEVICE_INFO_LIST searchMvDevice() cameraController::~cameraController() { + for (auto camera : cameras) + { + delete camera.second; + } for (auto module : camerasVec) { Base* base_ptr = module.module_ptr; diff --git a/HanddleAI/HandleAiUi-new/back/cameraController.h b/HanddleAI/HandleAiUi-new/back/cameraController.h index 2bf56b51..8bfc0921 100644 --- a/HanddleAI/HandleAiUi-new/back/cameraController.h +++ b/HanddleAI/HandleAiUi-new/back/cameraController.h @@ -21,6 +21,11 @@ public: cameraName = cameraModulePtr.key; this->start(); } + ~camera() + { + runFlag = false; + QThread::msleep(2000); + } void run() { std::vectorcamera_mat; @@ -35,13 +40,11 @@ public: QThread::msleep(100); } } - void getCameraImg(std::vector& mats) { QByteArray task_name; - if (!cameraModulePtr.module_ptr->sendData(mats, task_name)) - qCritical() << "[Error] " << " camera_mat is error! "; - qDebug() << __FUNCTION__ << " line:" << __LINE__ << "camera_mat size:" << mats.size(); + if (cameraModulePtr.module_ptr->sendData(mats, task_name)) + qDebug() << __FUNCTION__ << " line:" << __LINE__ << "camera_mat size:" << mats.size(); } bool trigger() { diff --git a/HanddleAI/HandleAiUi-new/back/triggerController.h b/HanddleAI/HandleAiUi-new/back/triggerController.h index cde71301..b6c6e232 100644 --- a/HanddleAI/HandleAiUi-new/back/triggerController.h +++ b/HanddleAI/HandleAiUi-new/back/triggerController.h @@ -63,6 +63,8 @@ public: { runFlag = false; QThread::msleep(100); + delete trigger; + QThread::msleep(1000); } void init(backEndController* input); void run() @@ -162,7 +164,7 @@ private: void decodeCameraCMD(QByteArray byte); //´¥·¢Æ÷µÄÅäÖà int startPos = 1;//Êý¾Ý¶ÁÈ¡µÄÆðʼλ - int interval = 10;//¼ä¸ô + int interval = 50;//¼ä¸ô ReleaseFunction destory_finstcp; //ÊÍ·Å Base* trigger = nullptr; diff --git a/HanddleAI/HandleAiUi-new/front/pages/displayPageWidget.h b/HanddleAI/HandleAiUi-new/front/pages/displayPageWidget.h index 227037d5..5d89160e 100644 --- a/HanddleAI/HandleAiUi-new/front/pages/displayPageWidget.h +++ b/HanddleAI/HandleAiUi-new/front/pages/displayPageWidget.h @@ -12,7 +12,8 @@ public: QHBoxLayout* Layout; QLabel* icon, * Title; QWidget* leftWidget, * rightWidget; - ImageWidget* imgWidget; + ImageWidgetController _ImageWidgetController; + //ImageWidget* imgWidget; displayWidget() { this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -45,7 +46,7 @@ public: palette.setColor(QPalette::WindowText, Qt::white); QFont font("΢ÈíÑźÚ", 24, QFont::Bold); QVBoxLayout* hLayout = new QVBoxLayout(leftWidget); - //hLayout->setContentsMargins(0, 0, 0, 0); + hLayout->setContentsMargins(0, 0, 0, 0); Title = new QLabel(u8"Ö÷½çÃæ"); Title->setFont(font); @@ -53,9 +54,10 @@ public: Title->setAlignment(Qt::AlignLeft); hLayout->addWidget(Title); - imgWidget = new ImageWidget(); - hLayout->addWidget(imgWidget); - imgWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + hLayout->addWidget(&_ImageWidgetController); + _ImageWidgetController.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + _ImageWidgetController.createViewer(u8"Ïà»ú1"); + _ImageWidgetController.createViewer(u8"Ïà»ú2"); } void windowChanged() { diff --git a/HanddleAI/HandleAiUi-new/globalStruct.h b/HanddleAI/HandleAiUi-new/globalStruct.h index 1178f524..964b9f53 100644 --- a/HanddleAI/HandleAiUi-new/globalStruct.h +++ b/HanddleAI/HandleAiUi-new/globalStruct.h @@ -18,4 +18,10 @@ enum backEndError triggerConnectionError, camerInitFailure }; + +enum imgWidgetShowType +{ + imgWidgetOri, + imgWidgetRes +}; #pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/main.cpp b/HanddleAI/HandleAiUi-new/main.cpp index ef8ab040..d2fd1081 100644 --- a/HanddleAI/HandleAiUi-new/main.cpp +++ b/HanddleAI/HandleAiUi-new/main.cpp @@ -10,6 +10,10 @@ #include #include #include +void connectSignalAndSlots(MainWindow* front, backEndController* back) +{ + +} int main(int argc, char* argv[]) { QApplication a(argc, argv); @@ -29,6 +33,7 @@ int main(int argc, char* argv[]) ////////// backEndController _backEnd; MainWindow w; + connectSignalAndSlots(&w,&_backEnd); w.show(); return a.exec(); diff --git a/HanddleAI/HandleAiUi-new/signals.h b/HanddleAI/HandleAiUi-new/signals.h new file mode 100644 index 00000000..6302fa62 --- /dev/null +++ b/HanddleAI/HandleAiUi-new/signals.h @@ -0,0 +1,4 @@ + + + +#pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h b/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h index 9f2b2366..7542d80d 100644 --- a/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h +++ b/HanddleAI/HandleAiUi-new/uiModule/uiModule_imageView.h @@ -107,6 +107,7 @@ public: m_image = pixmap.copy(); initShow(); } + void resetImage() { if (m_image.isNull()) @@ -244,10 +245,84 @@ protected: } private: + void showimg(cv::Mat& img) + { + scene->clear(); + // ¼ÓÔØÍ¼Ïñ + cv::Mat matForQimg; + cvtColor(img, matForQimg, cv::COLOR_BGR2RGB); + QImage disImage = QImage((const unsigned char*)(matForQimg.data), matForQimg.cols, matForQimg.rows, QImage::Format_RGB888); + QPixmap pixmap = QPixmap::fromImage(disImage); + if (pixmap.isNull()) { + return; + } + auto item = scene->addPixmap(pixmap); + setSceneRect(pixmap.rect()); + + // ×ÔÊÊÓ¦Ëõ·Å + fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio); + + // ÉèÖÃÊÓͼ + //setFixedSize(640, 480); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setMouseTracking(true); + if (rectGroup != nullptr) + delete rectGroup; + rectGroup = new QGraphicsItemGroup(); + scene->addItem(rectGroup); + } + void showimg(QImage& img) + { + scene->clear(); + // ¼ÓÔØÍ¼Ïñ + QPixmap pixmap = QPixmap::fromImage(img); + if (pixmap.isNull()) { + return; + } + auto item = scene->addPixmap(pixmap); + setSceneRect(pixmap.rect()); + + // ×ÔÊÊÓ¦Ëõ·Å + fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio); + + // ÉèÖÃÊÓͼ + //setFixedSize(640, 480); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setMouseTracking(true); + if (rectGroup != nullptr) + delete rectGroup; + rectGroup = new QGraphicsItemGroup(); + scene->addItem(rectGroup); + } + void showimg(QPixmap& img) + { + scene->clear(); + // ¼ÓÔØÍ¼Ïñ + if (img.isNull()) { + return; + } + auto item = scene->addPixmap(img); + setSceneRect(img.rect()); + + // ×ÔÊÊÓ¦Ëõ·Å + fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio); + + // ÉèÖÃÊÓͼ + //setFixedSize(640, 480); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setMouseTracking(true); + if (rectGroup != nullptr) + delete rectGroup; + rectGroup = new QGraphicsItemGroup(); + scene->addItem(rectGroup); + } QPixmap m_image; bool m_isPan; QPoint m_prevPan; - + QGraphicsItemGroup* rectGroup = nullptr; }; class ImageWidget : public QWidget { @@ -311,22 +386,59 @@ public: setContextMenuPolicy(Qt::CustomContextMenu); connect(this, &QWidget::customContextMenuRequested, this, &ImageWidget::showContextMenu); } - void setLabelText(const QString& text) { + void setTitle(const QString& text) { label->setText(text); } - void showOriImg(cv::Mat oriImgInput) + //set²»Ò»¶¨ÏÔʾ£¬Òª¸ù¾Ýµ±Ç°ÏÔʾµÄÀàÐ;ö¶¨ + void setOriImg(cv::Mat oriImgInput) { + if (oriImgInput.empty()) { + return; + } + pixOriImg = QPixmap::fromImage(cvMatToQImage(oriImgInput).rgbSwapped()); + if (pixOriImg.isNull()) { + return; + } oriImg= oriImgInput; if (MatType == false) - setImageFromMat(oriImgInput); + showImg(pixOriImg); } - void showResImg(cv::Mat resImgInput) + //set²»Ò»¶¨ÏÔʾ£¬Òª¸ù¾Ýµ±Ç°ÏÔʾµÄÀàÐ;ö¶¨ + void setResImg(cv::Mat resImgInput) { - resImg= resImgInput; + if (resImgInput.empty()) { + return; + } + pixResImg = QPixmap::fromImage(cvMatToQImage(resImgInput).rgbSwapped()); + if (pixResImg.isNull()) { + return; + } + resImg = resImgInput; if (MatType == true) - setImageFromMat(resImg); + showImg(pixResImg); } - void setImageFromMat(cv::Mat imageMat) { + //set²»Ò»¶¨ÏÔʾ£¬Òª¸ù¾Ýµ±Ç°ÏÔʾµÄÀàÐ;ö¶¨ + void setOriImg(QPixmap oriImgInput) + { + pixOriImg = oriImgInput; + if (pixOriImg.isNull()) { + return; + } + if (MatType == false) + showImg(pixOriImg); + } + //set²»Ò»¶¨ÏÔʾ£¬Òª¸ù¾Ýµ±Ç°ÏÔʾµÄÀàÐ;ö¶¨ + void setResImg(QPixmap resImgInput) + { + pixResImg = resImgInput; + if (pixResImg.isNull()) { + return; + } + if (MatType == true) + showImg(pixResImg); + } + //ÎÞÊÓµ±Ç°ÀàÐÍÖ±½ÓÏÔʾ + void showImg(cv::Mat& imageMat) { if (imageMat.empty()) { return; } @@ -340,34 +452,27 @@ public: if (pixmap.isNull()) { return; } - - //bool itemUpdated = false; - //for (QGraphicsItem* item : scene->items()) { - // QGraphicsPixmapItem* pixmapItem = dynamic_cast(item); - // if (pixmapItem) { - // pixmapItem->setPixmap(pixmap); - // itemUpdated = true; - // break; - // } - //} - - //if (!itemUpdated) { - // QGraphicsPixmapItem* item = new QGraphicsPixmapItem(pixmap); - // scene->addItem(item); - //} view->setPixmap(pixmap); - //view->fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio); + } + void showImg(QPixmap& imageMat) { + view->setPixmap(imageMat); } void switchOriAndRes()//Çл»Ô­Í¼ºÍ½á¹ûͼ { if (MatType == false) { - setImageFromMat(resImg); + if(pixOriImg.isNull()) + showImg(resImg); + else + showImg(pixResImg); label2->setText(u8"½á¹ûͼ"); } else { - setImageFromMat(oriImg); + if (pixOriImg.isNull()) + showImg(oriImg); + else + showImg(pixOriImg); label2->setText(u8"ԭͼ"); } MatType = !MatType; @@ -411,6 +516,9 @@ private: } cv::Mat oriImg; cv::Mat resImg; + QPixmap pixOriImg; + QPixmap pixResImg; + bool MatType = false;//false ori true Res int in = 0; QLabel* label; @@ -419,50 +527,86 @@ private: //QGraphicsPixmapItem* item; SonGraphicsView* view; }; -class ImageWidgetController +class ImageWidgetController :public QWidget { public: - QMutex mutex; - QList< ImageWidget*>ImageWidgetList; - std::unordered_mapmap; - ImageWidget* createViewer(std::string nickName = "none") + QGridLayout* Layout = new QGridLayout(); + ImageWidgetController() + { + this->setLayout(Layout); + Layout->setContentsMargins(0, 0, 0, 0); + } + ImageWidget* createViewer(QString nickName = "none") { ImageWidget* ImageView = new ImageWidget(); ImageWidgetList.push_back(ImageView); if (nickName != "none") map.insert({ nickName,ImageView }); + ImageView->setTitle(nickName); + Layout->addWidget(ImageView); return ImageView; } - bool showOriImg(cv::Mat img, int index) + + QMutex mutex; + QList< ImageWidget*>ImageWidgetList; + std::unordered_mapmap; + + bool setImg(cv::Mat img, imgWidgetShowType _type , int index) { if (index > ImageWidgetList.size()) return false; - if (img.channels() == 1) - cv::cvtColor(img, img, cv::COLOR_GRAY2BGR); - ImageWidgetList[index]->showOriImg(img); + switch (_type) + { + case imgWidgetOri: + ImageWidgetList[index]->setOriImg(img); + break; + case imgWidgetRes: + ImageWidgetList[index]->setResImg(img); + break; + } + } - bool showResImg(cv::Mat img, int index) + bool setImg(cv::Mat img, imgWidgetShowType _type, QString nickName) + { + if (map.find(nickName) == map.end()) + return false; + switch (_type) + { + case imgWidgetOri: + map[nickName]->setOriImg(img); + break; + case imgWidgetRes: + map[nickName]->setResImg(img); + break; + } + } + bool setImg(QPixmap img, imgWidgetShowType _type, int index) { if (index > ImageWidgetList.size()) return false; - if (img.channels() == 1) - cv::cvtColor(img, img, cv::COLOR_GRAY2BGR); - ImageWidgetList[index]->showResImg(img); + switch (_type) + { + case imgWidgetOri: + ImageWidgetList[index]->setOriImg(img); + break; + case imgWidgetRes: + ImageWidgetList[index]->setResImg(img); + break; + } + } - bool showOriImg(cv::Mat img, std::string nickName) + bool setImg(QPixmap img, imgWidgetShowType _type, QString nickName) { if (map.find(nickName) == map.end()) return false; - if (img.channels() == 1) - cv::cvtColor(img, img, cv::COLOR_GRAY2BGR); - map[nickName]->showOriImg(img); - } - bool showResImg(cv::Mat img, std::string nickName) - { - if (map.find(nickName) == map.end()) - return false; - if (img.channels() == 1) - cv::cvtColor(img, img, cv::COLOR_GRAY2BGR); - map[nickName]->showResImg(img); + switch (_type) + { + case imgWidgetOri: + map[nickName]->setOriImg(img); + break; + case imgWidgetRes: + map[nickName]->setResImg(img); + break; + } } }; \ No newline at end of file diff --git a/lib/Hd_3DCameraLMI_module_PointLazer.exp b/lib/Hd_3DCameraLMI_module_PointLazer.exp index b0d66668..c128f721 100644 Binary files a/lib/Hd_3DCameraLMI_module_PointLazer.exp and b/lib/Hd_3DCameraLMI_module_PointLazer.exp differ diff --git a/lib/Hd_3DCameraLMI_module_PointLazer.lib b/lib/Hd_3DCameraLMI_module_PointLazer.lib index b04150d6..b506c2ad 100644 Binary files a/lib/Hd_3DCameraLMI_module_PointLazer.lib and b/lib/Hd_3DCameraLMI_module_PointLazer.lib differ diff --git a/lib/Hd_DalsaCamera_module.exp b/lib/Hd_DalsaCamera_module.exp index 9d36f208..d51dd347 100644 Binary files a/lib/Hd_DalsaCamera_module.exp and b/lib/Hd_DalsaCamera_module.exp differ diff --git a/lib/Hd_DalsaCamera_module.lib b/lib/Hd_DalsaCamera_module.lib index 9c451b2e..c271a24e 100644 Binary files a/lib/Hd_DalsaCamera_module.lib and b/lib/Hd_DalsaCamera_module.lib differ diff --git a/lib/Hd_FinsTcp_module.exp b/lib/Hd_FinsTcp_module.exp index 53c3f41b..63243947 100644 Binary files a/lib/Hd_FinsTcp_module.exp and b/lib/Hd_FinsTcp_module.exp differ diff --git a/lib/Hd_FinsTcp_module.lib b/lib/Hd_FinsTcp_module.lib index f679fdae..e7784b3e 100644 Binary files a/lib/Hd_FinsTcp_module.lib and b/lib/Hd_FinsTcp_module.lib differ diff --git a/lib/Hd_MvCameraTL_module.exp b/lib/Hd_MvCameraTL_module.exp index 68a0f198..2f533e23 100644 Binary files a/lib/Hd_MvCameraTL_module.exp and b/lib/Hd_MvCameraTL_module.exp differ diff --git a/lib/Hd_MvCameraTL_module.lib b/lib/Hd_MvCameraTL_module.lib index 114c7c4c..d86de15e 100644 Binary files a/lib/Hd_MvCameraTL_module.lib and b/lib/Hd_MvCameraTL_module.lib differ diff --git a/lib/Hd_MvCamera_module_GENTL.exp b/lib/Hd_MvCamera_module_GENTL.exp index 588ebc79..f0a89b55 100644 Binary files a/lib/Hd_MvCamera_module_GENTL.exp and b/lib/Hd_MvCamera_module_GENTL.exp differ diff --git a/lib/Hd_MvCamera_module_GENTL.lib b/lib/Hd_MvCamera_module_GENTL.lib index 578b535e..4010f0a3 100644 Binary files a/lib/Hd_MvCamera_module_GENTL.lib and b/lib/Hd_MvCamera_module_GENTL.lib differ diff --git a/lib/Hd_MvCamera_module_GIGE.exp b/lib/Hd_MvCamera_module_GIGE.exp index 0c571208..baf010b9 100644 Binary files a/lib/Hd_MvCamera_module_GIGE.exp and b/lib/Hd_MvCamera_module_GIGE.exp differ diff --git a/lib/Hd_MvCamera_module_GIGE.lib b/lib/Hd_MvCamera_module_GIGE.lib index f5ba12df..110ae8d7 100644 Binary files a/lib/Hd_MvCamera_module_GIGE.lib and b/lib/Hd_MvCamera_module_GIGE.lib differ diff --git a/lib/Hd_ResultsSummary_module.exp b/lib/Hd_ResultsSummary_module.exp index 59f77271..72272a70 100644 Binary files a/lib/Hd_ResultsSummary_module.exp and b/lib/Hd_ResultsSummary_module.exp differ diff --git a/lib/Hd_ResultsSummary_module.lib b/lib/Hd_ResultsSummary_module.lib index ff33633f..8baafc1c 100644 Binary files a/lib/Hd_ResultsSummary_module.lib and b/lib/Hd_ResultsSummary_module.lib differ diff --git a/lib/Hd_SocketModule_ModbusTcp.exp b/lib/Hd_SocketModule_ModbusTcp.exp index b96d9533..25890329 100644 Binary files a/lib/Hd_SocketModule_ModbusTcp.exp and b/lib/Hd_SocketModule_ModbusTcp.exp differ diff --git a/lib/Hd_SocketModule_ModbusTcp.lib b/lib/Hd_SocketModule_ModbusTcp.lib index 7d987e79..b3ff8f19 100644 Binary files a/lib/Hd_SocketModule_ModbusTcp.lib and b/lib/Hd_SocketModule_ModbusTcp.lib differ diff --git a/lib/Hd_VirtualCamera_ReadFile.exp b/lib/Hd_VirtualCamera_ReadFile.exp index 2ab8a327..97564e7e 100644 Binary files a/lib/Hd_VirtualCamera_ReadFile.exp and b/lib/Hd_VirtualCamera_ReadFile.exp differ diff --git a/lib/Hd_VirtualCamera_ReadFile.lib b/lib/Hd_VirtualCamera_ReadFile.lib index 758ab845..6ea40c15 100644 Binary files a/lib/Hd_VirtualCamera_ReadFile.lib and b/lib/Hd_VirtualCamera_ReadFile.lib differ