#pragma once #include #include "ui_QtCameraDebug.h" #include "pbglobalobject.h" #include "QImageWidget.h" #include "QMouseEvent" #pragma execution_character_set("utf-8") //保存图片的结构体 struct saveImgStruct { cv::Mat out_Mat; std::string saveKey; //关键字,用于LOG日志 std::string savePath; //保存路径 }; class QtCameraDebug : public QMainWindow { Q_OBJECT public: QtCameraDebug(QWidget *parent = nullptr); ~QtCameraDebug(); //1、模块序号 //每个模块的序号,不相同; int index = 0; //2、相机类型 //代表的具体相机及软/硬触发,见pbglobalobject.h int type = -1; //3、初始化相机 //参数:相机序号 bool initCamera(int cameraIndex); //4、设置 //参数:相机序号、图像参数(不使用)、设置的相机参数 bool setData(int cameraIndex, const vector&, const QStringList&); //5、获取数据 //参数:相机序号、获取的图像、获取的数据(实际无) bool data(int cameraIndex, std::vector&, QStringList&); //6、关闭模块 //参数:相机序号 bool closeCameraModel(int cameraIndex); private: Ui::QtCameraDebugClass ui; void initCombox(); QJsonObject load_camera_Example();// QString cfg); void decodeImage(QString key, cv::Mat mtx); void showTransferImage(QString cameraKey_index, QImage* image); bool createModule(); int mathcCmaeraType(QString moduleName, QString triggerType); void show_myParasValueMap(); bool refresh_myParasValueMap(); QJsonObject load_cameraList(QString cfgName); bool saveCfg(); void showCameraList(QString cfgName); //存图线程 void saveImgThread(); //保存图片队列 QQueue saveStruct; //判断文件夹是否存在,不存在则创建 void isDirExist(QString fullDirName); //存图加入队列 void addImgToSaveStruct(cv::Mat img2D, QString saveKey, QString savePath); void closeEvent(QCloseEvent*); int nwith = 0;//获取界面控件Graphics View的宽度 int nheight = 0;//获取界面控件Graphics View的高度 QList < QImageWidget* > m_pImageList; QList < QGraphicsScene*> qgraphicsSceneList; signals: void QtCameraDebug_done(); protected: void mouseMoveEvent(QMouseEvent* event) override; void mousePressEvent(QMouseEvent* event) override; void mouseReleaseEvent(QMouseEvent* event) override; private: QPoint m_lastPos; public: enum MousePoss { LeftUp = 0, Up, RightUp, Right, RightDown, Down, LeftDown, Left, Middle }; private: MousePoss mp_curPos; //记录鼠标当前所在区域的变量 //改变窗口的大小 void changeWindowSize(MousePoss type, QRect& wid, QPoint ptemp, int minWidth, int minHeight); //修改鼠标样式 void setCursorType(MousePoss type); //计算鼠标位置 MousePoss calcmouseposs(QPoint p); };