ThresholdToolsDlg.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. 
  2. // ThresholdToolsDlg.h: 头文件
  3. //
  4. #pragma once
  5. #include "filehelp.h"
  6. // CThresholdToolsDlg 对话框
  7. class CThresholdToolsDlg : public CDialogEx
  8. {
  9. // 构造
  10. public:
  11. CThresholdToolsDlg(CWnd* pParent = nullptr); // 标准构造函数
  12. // 对话框数据
  13. #ifdef AFX_DESIGN_TIME
  14. enum { IDD = IDD_THRESHOLDTOOLS_DIALOG };
  15. #endif
  16. protected:
  17. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
  18. public:
  19. void DrawMat(Mat &img, UINT uId);
  20. // 刷新画布;
  21. void RefreshCanvas();
  22. // 图像二值化;
  23. BOOL ImgThreshold(long nThresholdVal, long nMaxThresholdVal = 255);
  24. // 轮廓填充;
  25. BOOL DrawContours(BOOL bPerimeter, long nMinPerimeter, long nMaxPerimeter, BOOL bArea, long nMinArea, long nMaxArea);
  26. // 点是否在轮廓内;
  27. void GetPointInfo(CPoint pt, long &nPerimeter, long &nArea);
  28. // 屏幕坐标转成窗口坐标;
  29. // 窗口坐标转成控件坐标;
  30. // 控件坐标转成图像坐标;
  31. CPoint WndPt2ImgPt(CPoint WndPt);
  32. // ROI
  33. void GetROI();
  34. // 原图;
  35. Mat m_Img;
  36. // 截图;
  37. Mat m_ImgShow;
  38. // ROI;
  39. Mat m_ImgROI;
  40. // 效果图;
  41. Mat *m_pRenderings;
  42. // 二值化;
  43. Mat m_ImgThreshold;
  44. // 轮廓图;
  45. Mat m_ImgContours;
  46. // 轮廓;
  47. vector<vector<Point>> m_contours;
  48. // 轮廓关系;
  49. vector<Vec4i> m_hierarchy;
  50. // 文件;
  51. STR_VEC m_files;
  52. CRect m_WndRect;
  53. BOOL m_bThreshold;
  54. BOOL m_bSquare;
  55. BOOL m_bPerimeter;
  56. public:
  57. // 模板图片;
  58. Mat m_ImgTemp;
  59. // 实现
  60. protected:
  61. HICON m_hIcon;
  62. // 生成的消息映射函数
  63. virtual BOOL OnInitDialog();
  64. afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
  65. afx_msg void OnPaint();
  66. afx_msg HCURSOR OnQueryDragIcon();
  67. DECLARE_MESSAGE_MAP()
  68. public:
  69. afx_msg void OnBnClickedOpenimg();
  70. afx_msg void OnSize(UINT nType, int cx, int cy);
  71. CSliderCtrl m_slider;
  72. afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  73. CString m_strMaxVal;
  74. afx_msg void OnBnClickedOk();
  75. afx_msg void OnBnClickedCancel();
  76. afx_msg void OnBnClickedReset();
  77. afx_msg void OnBnClickedButton2();
  78. afx_msg void OnBnClickedCheck1();
  79. afx_msg void OnBnClickedCheck2();
  80. afx_msg void OnEnChangePerimeter();
  81. afx_msg void OnEnChangeSquare();
  82. CSpinButtonCtrl m_Spin1;
  83. CSpinButtonCtrl m_Spin2;
  84. afx_msg void OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult);
  85. afx_msg void OnDeltaposSpin2(NMHDR *pNMHDR, LRESULT *pResult);
  86. afx_msg void OnEnChangePerimeter2();
  87. afx_msg void OnEnChangeSquare2();
  88. afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
  89. virtual BOOL PreTranslateMessage(MSG* pMsg);
  90. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  91. afx_msg void OnBnClickedCheck3();
  92. CComboBox m_cbThresholdType;
  93. CString m_strLeft;
  94. CString m_strTop;
  95. CString m_strRight;
  96. CString m_strBottom;
  97. afx_msg void OnCbnSelchangeThresholdType();
  98. afx_msg void OnEnChangeLeft();
  99. afx_msg void OnEnChangeTop();
  100. afx_msg void OnEnChangeRight();
  101. afx_msg void OnEnChangeBottom();
  102. afx_msg void OnBnClickedPreve();
  103. afx_msg void OnBnClickedNext();
  104. int m_curIndex;
  105. void OpenImg(LPCTSTR lpFile, BOOL bResetROI = FALSE);
  106. int GetFileIndex(LPCTSTR lpCurFile, STR_VEC &vtFiles);
  107. int m_nRadio;
  108. afx_msg void OnBnClickedThreshold();
  109. afx_msg void OnBnClickedOpenTemp();
  110. afx_msg void OnBnClickedFindTemp();
  111. void DrawTempContours();
  112. };