Files
2024-10-17 16:37:42 +08:00

91 lines
2.9 KiB
C++

#pragma once
#include <QtWidgets/QMainWindow>
#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<cv::Mat>&, const QStringList&);
//5、获取数据
//参数:相机序号、获取的图像、获取的数据(实际无)
bool data(int cameraIndex, std::vector<cv::Mat>&, 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<saveImgStruct> 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);
};