?? imageobjectdlg.h
字號:
// ImageObjectDlg.h : header file
//
#pragma once
#include "afxcmn.h"
#include "afxwin.h"
#include "staticimage.h"
#include "childfrm.h"
typedef struct tagDetectRegion
{
CRect region;
int threshold;
}DetectRegion;
typedef struct tagSystemSetParameter
{
int detect_num;
int image_light;
int image_contrast;
DetectRegion dtr[6];
}SystemSetParameter;
#define UM_PROCESS_IMAGE_DATA WM_USER+876
#define IMAGE_HEIGHT 576
#define IMAGE_WIDTH 720
#define MAX_DETECT_REGION_NUM 4
#define MAX_REGION_WIDTH 200
#define MAX_REGION_HEIGHT 80
#define NO_OBJECT 10
#define OBJECT_HEAD 20
#define OBJECT_MIDDLE 30
#define OBJECT_TAIL 40
#define BRIGHT_CURVE_SPEED 5
#define GET_IMAGE_EVENT 345
// CImageObjectDlg dialog
class CImageObjectDlg : public CDialog
{
// Construction
public:
CImageObjectDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
enum { IDD = IDD_IMAGEOBJECT_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
// 圖像亮度設定滑塊
CSliderCtrl m_ImageLightSlider;
// 圖像對比度設定滑塊
CSliderCtrl m_ImageContrastSlider;
CRichEditCtrl m_SetDetectNum;
CComboBox m_SelectDetectRegion;
CRichEditCtrl m_SetDetectRegionHeight;
CRichEditCtrl m_SetDetectRegionWidth;
CRichEditCtrl m_SetDetectThreshold;
// 1號檢測區平均亮度
CRichEditCtrl m_DetectRegion1Light;
CRichEditCtrl m_DetectRegion2Light;
CRichEditCtrl m_DetectRegion3Light;
CRichEditCtrl m_DetectRegion4Light;
CRichEditCtrl m_DetectRegion5Light;
CRichEditCtrl m_DetectRegion6Light;
CRichEditCtrl m_DetectRegion1Threshold;
CRichEditCtrl m_DetectRegion2Threshold;
CRichEditCtrl m_DetectRegion3Threshold;
CRichEditCtrl m_DetectRegion4Threshold;
CRichEditCtrl m_DetectRegion5Threshold;
CRichEditCtrl m_DetectRegion6Threshold;
CRichEditCtrl m_Counter;
CButton m_bntSetDetect;
CStatic m_ShowImage;
CStatic m_CurveWindow;
CChildFrame *m_lpShowVideoWnd;
SystemSetParameter m_SysSetPara;
CBitmap m_bmpCurve;
CBitmap m_bmpMain;
CPalette m_Palette;
BITMAPINFO *m_lpbmiVideo;
BITMAPINFO *m_lpbmiCurve;
BYTE * m_bufferVideo; //主顯示口的DIB位圖數據區指針
BYTE m_bufferCurveBlock[100*256]; //塊曲線圖的DIB位圖數據區指針
BYTE m_bufferCurveHist[100*256]; //流曲線圖的DIB位圖數據區指針
void * lpcallbakdata;
UINT_PTR m_GetImageTimer;
bool m_SetEnable;
long m_lBrightMin;
long m_lBrightMax;
long m_lBrightStep;
long m_lContrastMin;
long m_lContrastMax;
long m_lContrastStep;
//圖像檢測相關變量
int m_CardID;
long m_iDetectCountTotal; //檢測到的目標總計數;
int m_iDetectCountTemp; //交換數據暫存
int m_iCurrentDetectRegionID;//當前檢測區ID
int m_CurveSpeed; //平均亮度曲線移動速度
int m_indexofLightHist; //平均亮度歷史數據存儲區的當前位置指示
bool m_RegionPosiAdjust; //檢測區域正在調整位置狀態標記
int m_CurveAverage[MAX_DETECT_REGION_NUM];//亮度累計變量
int m_iRegionDetectStatu[MAX_DETECT_REGION_NUM];//每個檢測區的檢測狀態 標記變量
CRect DetectRegion[MAX_DETECT_REGION_NUM];//檢測區域對應的客戶區矩形
BYTE m_RegionLightHist[MAX_DETECT_REGION_NUM][100];//指針數組,每個檢測區的平均亮度歷史數據存儲區指針
BYTE m_BrightnessAverage[MAX_DETECT_REGION_NUM];//每個檢測區的平均亮度
BYTE m_VAverageLight[MAX_DETECT_REGION_NUM][MAX_REGION_WIDTH]; //每個檢測區域的垂直平均結果存儲區指針
BYTE m_regionImageData[MAX_REGION_WIDTH*MAX_REGION_HEIGHT]; //data take from image;
CPoint m_StartPoint; //配置模式下,移動檢測區域的起始位置
CPoint m_LasterPoint;
bool GetParameter();
bool InitVideoCaptureCard();
bool SetParameter();
bool SaveParameter();
void RectImageToDlg(CRect *lpSource,CRect *lpResult);
void RectDlgToImage(CRect *lpSource,CRect *lpResult);
void GetRegionImageData();
void RegionImageProcess(int region_id);
void DisplayResult();
bool CheckHeader(BYTE *processData,long size,int threshold);
bool CheckEnd(BYTE *processData,long size,int threshold);
int CheckBody(BYTE *processData,long size,int threshold);
int CheckUpEdge(BYTE *processData,long size,int threshold);
int CheckDownEdge(BYTE *processData,long size,int threshold);
void BinTranslate(BYTE *processData,BYTE *result,long size,int threshold);
void AverageFilter1D(BYTE *processData,long size,int windowSize);
void MiddleFilter1D(BYTE *processData,long size,int windowSize);
public:
afx_msg void OnBnClickedBtnSet();
afx_msg void OnEnChangeRe2Detect6Threshold();
afx_msg void OnEnChangeRe2RegionCountSet();
afx_msg void OnEnKillfocusRe2RegionCountSet();
afx_msg void OnCbnSelchangeComboSelectRegion();
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnCancel();
afx_msg LRESULT ImageProcess( WPARAM wParam, LPARAM lParam);
public:
afx_msg void OnEnKillfocusRe2RegionHeight();
public:
afx_msg void OnEnKillfocusRe2RegionWidth();
public:
afx_msg void OnEnKillfocusRe2RegionThreshold();
public:
afx_msg void OnTimer(UINT_PTR nIDEvent);
public:
afx_msg void OnBnClickedButtonDebug();
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -