widget.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QDir>
  5. #include <QLabel>
  6. #include <QDesktopServices>
  7. #include <QUrl>
  8. #include <QDebug>
  9. #include <QListView>
  10. #include <QThread>
  11. #include <QFileDialog>
  12. #include <QDateTime>
  13. #include <QSharedPointer>
  14. #include <process.h>
  15. #include "excelapi.h"
  16. #include "PrintAPI.h"
  17. #include "client.h"
  18. #include "WorkThread.h"
  19. #include "mainshowwidget.h"
  20. #include "FeatureMatching.h"
  21. #include <vector>
  22. #include "log.h"
  23. #include "cvxcamera.h"
  24. #include <camerapar.h>
  25. #include <filewatcher.h>
  26. namespace cv
  27. {
  28. class Mat;
  29. }
  30. QT_BEGIN_NAMESPACE
  31. namespace Ui { class Widget; }
  32. QT_END_NAMESPACE
  33. class Widget : public QWidget
  34. {
  35. Q_OBJECT
  36. public:
  37. Widget(QWidget *parent = nullptr);
  38. ~Widget();
  39. void ExportExcel();
  40. virtual void resizeEvent(QResizeEvent *event);
  41. public slots:
  42. void informationDisplay(QString str,int logType = 1); //0 debug,1 info , 2 warn , 3 error
  43. void on_LABLE_ShowSmallPicRef_clicked();
  44. void on_LABLE_ShowSmallPicDet_clicked();
  45. void receiveParseResult(std::multimap<int, QRect> errorsRect);
  46. void movepointSlot(QPointF point);
  47. void enlargeImg();
  48. void clearImg();
  49. void createDealedImage(int s = 0);
  50. void showqImage(QImage image, QLabel* gui);
  51. void showqImageSource(QImage image, int refOrDet = 0); //1,参考图,2检测图
  52. void on_comboBox_activated(int index);
  53. void on_BTN_OpenImageDet_clicked();
  54. void on_BTN_OpenImageRef_clicked();
  55. void on_BTN_AlgDetect_clicked(); //算法检测
  56. void on_BTN_Preprocess_clicked();
  57. void on_BTN_TakePhotoRef_clicked();
  58. void on_BTN_SaveImage_clicked();
  59. void on_BTN_ConfigCamera_clicked();
  60. void on_BTN_Close_clicked();
  61. void on_BTN_Min_clicked();
  62. void on_BTN_Max_clicked();
  63. void on_RBT_CameraMode_clicked(bool checked);
  64. void on_RBT_FileMode_clicked(bool checked);
  65. void on_RectAlgChangedDet(QRect r);
  66. void on_RectAlgChangedRef(QRect r);
  67. void slot_TWG_resulrInfo_Clicked(int, int);
  68. void slot_TWG_resulrInfo_SelectChanged(); //控制结果矩形部分局部图像实时显示在左侧主窗口
  69. void realTimeShowImage();
  70. void matchAndRunAlg();//异步后台线程进行处理
  71. void slot_changeShowMode();
  72. signals:
  73. void sig_infoDisplay(QString str, int logType = 1); //0 debug,1 info , 2 warn , 3 error
  74. void sig_algReady();//成功进行完整一次算法检测
  75. protected:
  76. virtual void closeEvent(QCloseEvent* event);
  77. virtual void wheelEvent(QWheelEvent* event);
  78. private:
  79. void clearRltInfo();
  80. void saveRltImage();
  81. void login();
  82. void PostImg();
  83. void bfMatch(const cv::Mat& image, const cv::Mat& image2, cv::Mat& imageOut);
  84. void calRoiAlgDetFromRef();
  85. void calstdev(float* A, int num, float& mean, float& stdev);
  86. void setDetPic(const cv::Mat& pix, const std::vector<uchar>& picRaw);//设置检测图不加ROI
  87. void setRefPic(const QImage& pix, const std::vector<uchar>& picRaw);//设置参考图不加ROI
  88. void setDetPic(const cv::Mat& img);//设置检测图增加ROI
  89. void setRefPic(const cv::Mat& img);//设置参考图增加ROI
  90. void setDetPicInner();
  91. void setDetPicInner(const cv::Mat& img);//增加ROI
  92. void initRoiAlgRef(QSharedPointer<QImage> pix);
  93. void changeCamOrFileMode(); //切换本地和相机模式
  94. Ui::Widget *ui;
  95. QStringList content;
  96. QLabel *label;
  97. QRect m_roiAlgRef; //用于算法处理的ROI
  98. QRect m_roiAlgDet; //用于算法处理的ROI
  99. cv::Mat m_homMat2d; //参考图到检测图变换矩阵
  100. FileWatcher m_watcher; //用于监控指定文件夹状态
  101. QSharedPointer<QImage> m_picShow;//指向当前主窗口显示的图像,主要是为了兼容结果图的检测图在右侧小窗口的显示
  102. QTimer* m_timer;
  103. };
  104. #endif