2024-09-27 14:31:22 +08:00
|
|
|
#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、设置
|
|
|
|
|
//参数:相机序号、图像参数(不使用)、设置的相机参数
|
2024-09-30 15:36:39 +08:00
|
|
|
bool setData(int cameraIndex, const std::vector<cv::Mat>&, const QStringList&);
|
2024-09-27 14:31:22 +08:00
|
|
|
//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);
|
|
|
|
|
};
|