#pragma once #include "DefHSStructure.h" #include "afxwin.h" #include "gscn_drv.h" #include #include "Config.h" // CIS 对话框 struct Result { std::vector> contours; std::vector area; }; class CIS : public CDialog { DECLARE_DYNAMIC(CIS) public: CIS(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CIS(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_CIS_DIALOG1 }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() public: CImage img_front; CImage img_reverse; CRect rect_front; CRect rect_reverse; CListCtrl m_list; CComboBox Cis_box; std::thread c_thread; volatile bool b_run; volatile bool b_canget; volatile bool isduplex; void Cis_start(); void get_config(); void set_config(); virtual BOOL OnInitDialog(); void SetGscan_drv(GScn_Drv* c_drv); void detect_start(cv::Mat& sre); void findContours(const cv::Mat & src, std::vector>& contours, std::vector& hierarchy, int retr, int method = cv::CHAIN_APPROX_SIMPLE, cv::Point offset = cv::Point(0, 0)); void MatToCImage(Mat & mat, CImage & cimage); Result lessenColor(const cv::Mat &image, cv::Range range, int areaThre); void SetEnableGetImage(bool enable) { b_canget = enable; } private: GScn_Drv* C_drv; public: int c_channel; afx_msg void OnCbnSelchangeCombo1(); int spin_up; int spin_low; int spin_area_up; int spin_area_low; afx_msg void OnDeltaposSpin3(NMHDR *pNMHDR, LRESULT *pResult); CEdit edit_up; afx_msg void OnDeltaposSpin4(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnDeltaposSpin5(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnDeltaposSpin6(NMHDR *pNMHDR, LRESULT *pResult); CEdit edit_low; CEdit edit_area_up; CEdit edit_area_low; afx_msg void OnPaint(); };