MFC VS2017和Halcon17 联合编程,利用Halcon助手在PictureControl 连续采集显示摄像机图片

mac2022-07-05  27

VS2017

Halcon 17

MFC

使用笔记本自带的摄像机连续采集,显示在MFC的PictureControl控件

主要方法就是确认的时候,开启一个新的线程去采集

 

PictureControl 的ID :IDC_STATIC

 

CYunClassDlg.h文件

# include "HalconCpp.h" # include "HDevThread.h" using namespace HalconCpp; public: afx_msg void OnBnClickedCapture(); //采集按钮 afx_msg void OnBnClickedButtonCancel();//取消按钮 HTuple hv_WindowHandle; HObject ho_Image; HTuple HWindowID;//Picture Control 控件 HTuple m_HWindowID; //H CWnd * pWnd; bool StartImageState;//是否采集 static UINT StartCameraThread(LPVOID pParam);//新的采集线程

CYunClassDlg.cpp文件OnInitDialog

CRect Rect; pWnd = GetDlgItem(IDC_STATIC); HWindowID = (Hlong)pWnd->m_hWnd;//获取父窗口句柄 pWnd->GetWindowRect(&Rect); OpenWindow(0, 0, Rect.Width(), Rect.Height(), HWindowID, "visible", "", &m_HWindowID);

 

CYunClassDlg.cpp文件

//开始采集 void CYunClassDlg::OnBnClickedCapture() { //开启新线程处理 if(!StartImageState) AfxBeginThread(StartCameraThread,this,THREAD_PRIORITY_NORMAL,0,0,NULL); } UINT CYunClassDlg::StartCameraThread(LPVOID pParam) { CYunClassDlg *pDlg = (CYunClassDlg*) pParam; HTuple hv_Width; HTuple hv_Height; HTuple hv_AcqHandle; OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb", -1, "false", "default", "[0] Integrated Camera", 0, -1, &hv_AcqHandle); GrabImageStart(hv_AcqHandle, -1); pDlg->StartImageState = true; while (pDlg->StartImageState) { GrabImageAsync(&(pDlg->ho_Image), hv_AcqHandle, -1); GetImageSize(pDlg->ho_Image, &hv_Width, &hv_Height); SetPart(pDlg->m_HWindowID, 0, 0, hv_Height, hv_Width); DispObj(pDlg->ho_Image, pDlg->m_HWindowID); } CloseFramegrabber(hv_AcqHandle); AfxEndThread(0); return 0; } //停止采集 void CYunClassDlg::OnBnClickedButtonCancel() { StartImageState = false; }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最新回复(0)