#ifndef WIDGET_H #define WIDGET_H #include #include #include #include #include #include #include #include #include #include #include #include #include "excelapi.h" #include "PrintAPI.h" #include "client.h" #include "WorkThread.h" #include "mainshowwidget.h" #include "FeatureMatching.h" #include #include "log.h" #include "cvxcamera.h" #include #include namespace cv { class Mat; } QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); void ExportExcel(); virtual void resizeEvent(QResizeEvent *event); public slots: void informationDisplay(QString str,int logType = 1); //0 debug,1 info , 2 warn , 3 error void on_LABLE_ShowSmallPicRef_clicked(); void on_LABLE_ShowSmallPicDet_clicked(); void receiveParseResult(std::multimap errorsRect); void movepointSlot(QPointF point); void enlargeImg(); void clearImg(); void createDealedImage(int s = 0); void showqImage(QImage image, QLabel* gui); void showqImageSource(QImage image, int refOrDet = 0); //1,参考图,2检测图 void on_comboBox_activated(int index); void on_BTN_OpenImageDet_clicked(); void on_BTN_OpenImageRef_clicked(); void on_BTN_AlgDetect_clicked(); //算法检测 void on_BTN_Preprocess_clicked(); void on_BTN_TakePhotoRef_clicked(); void on_BTN_SaveImage_clicked(); void on_BTN_ConfigCamera_clicked(); void on_BTN_Close_clicked(); void on_BTN_Min_clicked(); void on_BTN_Max_clicked(); void on_RBT_CameraMode_clicked(bool checked); void on_RBT_FileMode_clicked(bool checked); void on_RectAlgChangedDet(QRect r); void on_RectAlgChangedRef(QRect r); void slot_TWG_resulrInfo_Clicked(int, int); void slot_TWG_resulrInfo_SelectChanged(); //控制结果矩形部分局部图像实时显示在左侧主窗口 void realTimeShowImage(); void matchAndRunAlg();//异步后台线程进行处理 void slot_changeShowMode(); signals: void sig_infoDisplay(QString str, int logType = 1); //0 debug,1 info , 2 warn , 3 error void sig_algReady();//成功进行完整一次算法检测 protected: virtual void closeEvent(QCloseEvent* event); virtual void wheelEvent(QWheelEvent* event); private: void clearRltInfo(); void saveRltImage(); void login(); void PostImg(); void bfMatch(const cv::Mat& image, const cv::Mat& image2, cv::Mat& imageOut); void calRoiAlgDetFromRef(); void calstdev(float* A, int num, float& mean, float& stdev); void setDetPic(const cv::Mat& pix, const std::vector& picRaw);//设置检测图不加ROI void setRefPic(const QImage& pix, const std::vector& picRaw);//设置参考图不加ROI void setDetPic(const cv::Mat& img);//设置检测图增加ROI void setRefPic(const cv::Mat& img);//设置参考图增加ROI void setDetPicInner(); void setDetPicInner(const cv::Mat& img);//增加ROI void initRoiAlgRef(QSharedPointer pix); void changeCamOrFileMode(); //切换本地和相机模式 Ui::Widget *ui; QStringList content; QLabel *label; QRect m_roiAlgRef; //用于算法处理的ROI QRect m_roiAlgDet; //用于算法处理的ROI cv::Mat m_homMat2d; //参考图到检测图变换矩阵 FileWatcher m_watcher; //用于监控指定文件夹状态 QSharedPointer m_picShow;//指向当前主窗口显示的图像,主要是为了兼容结果图的检测图在右侧小窗口的显示 QTimer* m_timer; }; #endif