Halcon10 与 VC++交互,通过picture control显示图像

来源:互联网 发布:matlab提取矩阵一部分 编辑:程序博客网 时间:2024/06/05 11:25

vs2010运行通过。VC++做的。

这个程序大概时这样的,左边是一个picture control,点击识别,通过调用halcon读图片,显示在vc++的mfc的picture control控件上。


步骤:

1》》》》》》》》》》》》》》》》》》

添加halcon头文件


2》》》》》》》》》》》》》》》》》》

添加一些类库


3》》》》》》》》》》》》》》》》》

写一个picture control窗口,你再在OnInitDialog里调用来初始化呀。

[plain] view plaincopyprint?
  1. void CHalconOCRExampleDlg::InitHalconWindow(void)  
  2. {  
  3.     //定义显示的起点和长宽高   
  4.     HTuple HWindowRow,HWindowColumn,HWindowWidth,HWindowHeight;    
  5.     //定义窗口ID     
  6.     HTuple HWindowID;  
  7.   
  8.     //定义一个CRect类的对象,用于获取图像框的尺寸和位置     
  9.     CRect Rect;    
  10.     CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC_HWINDOW);    
  11.   
  12.     CDC *pDC = pWnd->GetDC();    
  13.     pWnd->GetWindowRect(&Rect);    
  14.   
  15.     //设置显示窗口的起点和宽高     
  16.     HWindowRow = 0;    
  17.     HWindowColumn = 0;    
  18.     HWindowWidth = Rect.Width();    
  19.     HWindowHeight = Rect.Height();  
  20.     //设定固定的窗口大小,而不是根据控件大小设定     
  21.     //GetDlgItem(IDC_PIC_HWINDOW)->SetWindowPos(NULL,0,0,Rect.Width(),Rect.Height(),SWP_NOZORDER | SWP_NOMOVE);     
  22.     try    
  23.     {    
  24.         set_window_attr("border_width",0);    
  25.         HWindowID = (Hlong)pWnd->m_hWnd;    
  26.         open_window(HWindowRow,HWindowColumn,HWindowWidth,HWindowHeight,HWindowID,"visible","",&m_HWindowID);    
  27.         set_draw(m_HWindowID, "margin"/*,"margin"*/);//设置显示模式是margin(边缘)     
  28.     }    
  29.     catch (HException& except)    
  30.     {    
  31.         TRACE(except.message);    
  32.     }    
  33. }  

嗯,对了,你还要在类里声明几个变量,如下:

[plain] view plaincopyprint?
  1. HTuple m_HWindowID;//picture control经过处理之后标示符,以后显示图像时,直接显示在m_HWindowID即可。  
  2. HTuple m_FGHandle,m_ImageWidth, m_ImageHeight;//m_FGHandle是视频设备  
  3. Hobject m_LiveImage;//从图片或视频中抓取图像到这个变量里面  

4、这时,我们需要显示图片的时候就可以调用

[plain] view plaincopyprint?
  1. disp_obj(m_LiveImage, m_HWindowID);  

比如说像我的这个小程序:

[plain] view plaincopyprint?
  1. read_image(&m_LiveImage, "C:/Users/longx-app/Desktop/Images/lena.bmp");  
  2.   
  3. CRect Rect;    
  4. CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC_HWINDOW);    
  5.   
  6. CDC *pDC = pWnd->GetDC();    
  7. pWnd->GetWindowRect(&Rect);   
  8.   
  9. get_image_pointer1(m_LiveImage, NULL, NULL, &m_ImageWidth, &m_ImageHeight);//得到图像的宽高和指针  
  10. set_part(m_HWindowID, 0, 0, m_ImageHeight - 1, m_ImageWidth -1);//使图像显示适应窗口大小  
  11.   
  12. disp_obj(m_LiveImage, m_HWindowID);  

ok!我是一个没耐心写东西的人,就当做笔记。代码下载:


http://download.csdn.net/detail/loveq369/5984609

0 0
原创粉丝点击