vbnet下载中axhwindowxctrl1控件的怎样识别脸型

VB环境下halcon_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
VB环境下halcon
上传于||文档简介
&&V​B​环​境
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
你可能喜欢5081人阅读
应用-robot-vision-motion(20)
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
halcon学习方法:安装完halcon之后,在开始里出现一些文档
看完就算是入门了,里面讲了大部分应用的需要的步骤及所用算法
quick_guide.pdf
快速入门halcon
hdevelop_users_guide.pdf
详细讲解在hdevelop中使用halcon,及hdevelop的操作
programmers_guide.pdf
详细讲解在高级语言中的使用halcon
reference_hdevelop.pdf
讲解各个算子
安装完halcon会自动添加一个环境变量%HALCONROOT%,比如指向C:\Program Files\MVTec\HALCON-10.0
在%HALCONROOT%\examples目录下是各种高级语言使用halcon的源码例子
http://blog.csdn.net/wgluser/article/category/1183275
.cn/s/articlelist__0_1.html
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
vb中使用halcon窗口加载图像
1.读取图像
read_image (Lena, 'F:/image/lena.jpg')
get_image_size (Lena, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_display (Lena)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()2.导出vb的bas代码
选择文件/导出,弹出
注意:此处选择使用halcon窗口
3.vb中调用read_image.bas
先看一下read_image.bas的内容,可知在需要的地方直接调用main即可
' Main procedure
Private Sub action()
' Local iconic variables
Dim ho_Lena As HUntypedObjectX
' Local control variables
Dim hv_Width As Variant, hv_Height As Variant
Dim hv_WindowHandle As Variant
Call Op.ReadImage(ho_Lena, &F:/image/lena.jpg&)
Call Op.GetImageSize(ho_Lena, hv_Width, hv_Height)
If COMExpWinHandleStack.IsOpen() Then
Op.CloseWindow (COMExpWinHandleStack.Pop())
Call Op.SetWindowAttr(&background_color&, &black&)
Call Op.OpenWindow(0, 0, Tuple.TupleDiv( _
hv_Width, 2), Tuple.TupleDiv(hv_Height, 2), 0, &&, &&, hv_WindowHandle)
COMExpWinHandleStack.Push (hv_WindowHandle)
Call set_display_font(hv_WindowHandle, 14, &mono&, &true&, &false&)
If COMExpWinHandleStack.IsOpen() Then
Call Op.DispObj(ho_Lena, COMExpWinHandleStack.GetActive())
Call disp_continue_message(hv_WindowHandle, &black&, &true&)
HDevelopStop
#If Not NO_EXPORT_APP_MAIN Then
Sub InitHalcon()
' Default settings used in HDevelop
Call Op.SetSystem(&do_low_error&, &false&)
Sub Main()
Call InitHalcon
Call action
#End If3.1.新建一个exe的project,然后保存,然后添加read_image.bas文件到此project
3.2.添加halcon/com控件:选择project/components,弹出的菜单中
3.3.在工具箱中会出现HWindowXCtrl控件,拖进form1,然后再拖一个commandbutton,
双击commanbutton,加入代码
Private Sub Command1_Click()
End Sub3.4.按F5运行程序,然后单击command1,弹出
这是一个halcon界面库构造的窗口,脱离vb窗口的。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
vb中使用hwindowxctrl的窗口加载图像
在上面第2步选择使用导出模板。
导出的代码如下,可知需要调用的过程是inithalcon和runhalcon
' Main procedure
Private Sub action()
' Local iconic variables
Dim ho_Lena As HUntypedObjectX
' Local control variables
Dim hv_Width As Variant, hv_Height As Variant
Dim hv_WindowHandle As Variant
Call Op.ReadImage(ho_Lena, &F:/image/lena.jpg&)
Call Op.GetImageSize(ho_Lena, hv_Width, hv_Height)
'dev_close_window(...);
'dev_open_window(...);
Call set_display_font(hv_ExpDefaultWinHandle, 14, &mono&, &true&, &false&)
Call Op.DispObj(ho_Lena, hv_ExpDefaultWinHandle)
Call disp_continue_message(hv_ExpDefaultWinHandle, &black&, &true&)
HDevelopStop
Sub InitHalcon()
' Default settings used in HDevelop
Call Op.SetSystem(&do_low_error&, &false&)
Sub RunHalcon(ByRef Window As HWindowX)
hv_ExpDefaultWinHandle = Window.HalconID
Call action
End Sub在上面的3.3中拖入一个commandbutton2,双击添加代码
Private Sub Form_Load()
Call InitHalcon
Private Sub Command2_Click()
Call RunHalcon(HWindowXCtrl.HalconWindow)
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
vb中使用hwindowxctrl的窗口加载视频
1.插入摄像头,只要qq视频模块可以使用的摄像头,halcon基本都可以使用吧
2.在halcon中新建一个工程,文件/新程序
3.选择助手/打开新的imageaquisition,点击检测,会检测到directshow
观察连接标签栏里已经识别出中微星的摄像头,可以点击连接,实时查看一下。
颜色空间中可以选择以灰度方式采集图像。
4.选择生成代码标签,如下。同步采集。
选择插入代码,如下
* Code generated by Image Acquisition 01
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', 'Vimicro USB PC Camera (ZC030x)', 0, -1, AcqHandle)
while (true)
&&& grab_image (Image, AcqHandle)
&&& * Do something
close_framegrabber (AcqHandle)其中
open_framegrabber用于打开摄像头并配置,此函数在调用时会测试要指定的设备,并锁定该设备。之后可以使用grab_image, grab_data, grab_image_async, or grab_data_async获取图像,然后处理。使用完之后需要用close_framegrabber释放,否则别的进程无法使用
grab_image采集图像到Image
close_framegrabber 关闭设备
在grab_image (Image, AcqHandle)后面加一句dev_display(Image),把图像显示出来
5.导出vb代码
' Main procedure
Private Sub action()
& ' Local iconic variables
& Dim ho_Image As HUntypedObjectX
& ' Local control variables
& Dim hv_AcqHandle As Variant
& 'Code generated by Image Acquisition 01
& Call Op.OpenFramegrabber(&DirectShow&, 1, 1, 0, 0, 0, 0, &default&, 8, &rgb&, -1, _
&&&&& &false&, &default&, &Vimicro USB PC Camera (ZC030x)&, 0, -1, hv_AcqHandle)
& Do While 1
&&& Call Op.GrabImage(ho_Image, hv_AcqHandle)
&&& Call Op.DispObj(ho_Image, hv_ExpDefaultWinHandle)
&&& 'Do something
&&& #If USE_DO_EVENTS Then
&&& ' Please note: The call of DoEvents() is only a hack to
&&& ' enable VB to react on events. Please change the code
&&& ' so that it can handle events in a standard way.
&&& DoEvents
&&& #End If
& Call Op.CloseFramegrabber(hv_AcqHandle)
Sub InitHalcon()
& ' Default settings used in HDevelop
& Call Op.SetSystem(&do_low_error&, &false&)
Sub RunHalcon(ByRef Window As HWindowX)
& hv_ExpDefaultWinHandle = Window.HalconID
& Call action
vb中调用方式很简单仍然是inithalocn和runhalcon
把read_camera.bas加进vb,添加代码
Private Sub Form_Load()
Call InitHalcon
Private Sub Command3_Click()
Call RunHalcon(HWindowXCtrl.HalconWindow)
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
需要注意的问题,
在hdevelop中的stop命令导入到vb.bas就变成HDevelopStop
HDevelopStop有两个版本实现,一个是空函数(使用halcon窗口导出时),一个是如下(使用导出模板时)
Public Sub HDevelopStop()
Call MsgBox(&Press button to continue&, vbYes, &Program stop&, &&, 1000)
在采集视频时,程序退出之前需要close_framegrabber,否则会出错
halcon error#5322:image aquisition:timeout.
此时需要重插一下camera
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
halcon播放avi视频
/******************************************************************/
vc使用halcon
使用hdevelop导出halcon程序的c++代码之后,比如
read_image (image, 'C:/Documents and Settings/Administrator/桌面/vision/IMG_436.bmp')
rgb1_to_gray (image, GrayImage)
dev_set_color('blue')
*bin_threshold (GrayImage, Region)
threshold(GrayImage,Region,100,255)
area_center (Region, Area, Row, Column)生成c++代码
///////////////////////////////////////////////////////////////////////////////
File generated by HDevelop for HALCON/C++ Version 10.0
///////////////////////////////////////////////////////////////////////////////
#include &HalconCpp.h&
using namespace H
#ifndef NO_EXPORT_MAIN
// Main procedure
void action()
using namespace H
// Local iconic variables
image, GrayImage, R
// Local control variables
Area, Row, C
read_image(&image, &C:/Documents and Settings/Administrator/桌面/vision/IMG_436.bmp&);
rgb1_to_gray(image, &GrayImage);
if (HDevWindowStack::IsOpen())
set_color(HDevWindowStack::GetActive(),&blue&);
bin_threshold(GrayImage, &Region);
area_center(Region, &Area, &Row, &Column);
#ifndef NO_EXPORT_APP_MAIN
int main(int argc, char *argv[])
using namespace H
// Default settings used in HDevelop (can be omitted)
set_system(&do_low_error&,&false&);
新建一个对话框mfc程序(vc2008),添加一个按钮button1,加入如下代码(我将action函数稍微改了一下)
当然先要#include &HalconCpp.h&
// Main procedure
double action( char * p)
using namespace H
// Local iconic variables
image, GrayImage, R
// Local control variables
Area, Row, C
read_image(&image, p);
rgb1_to_gray(image, &GrayImage);
if (HDevWindowStack::IsOpen())
set_color(HDevWindowStack::GetActive(),&blue&);
//bin_threshold(GrayImage, &Region);
threshold(GrayImage, &Region,50,255);
area_center(Region, &Area, &Row, &Column);
double d=Area[0];
void CabcDlg::OnBnClickedButton1()
// TODO: 在此添加控件通知处理程序代码
double d=action(&C:/Documents and Settings/Administrator/桌面/vision/IMG_436.bmp&);
str.Format(&%f&,d);
AfxMessageBox(str);
编译程序之前需要先设置一下include和链接环境,对于vc2008
工具/选项/项目解决方案/vc++目录/包含文件/&& 添加
C:\Program Files\MVTec\HALCON-10.0\include
C:\Program Files\MVTec\HALCON-10.0\include\cpp
工具/选项/项目解决方案/vc++目录/库文件/&& 添加
C:\Program Files\MVTec\HALCON-10.0\lib\x86sse2-win32
然后执行即可。
vc使用picture control显示halcon采集的图像
1.在对话框中添加一个picture control,比如IDC_PIC_HWINDOW
2.在xxdlg.h中添加&&&
&& &HTuple m_HWindowID;//picture control经过处理之后标示符,以后显示图像时,直接显示在m_HWindowID即可。
&& &HTuple m_FGHandle,m_ImageWidth, m_ImageH//m_FGHandle是视频设备
&& &Hobject m_LiveI//从图片或视频中抓取图像到这个变量里面
3.在xxdlg.cpp中添加初始化picture control的函数。可以在OnInitDialog函数中调用之。
// 初始化HALCON显示窗口
void CabcdDlg::InitHalconWindow(void)
//定义显示的起点和长宽高
HTuple HWindowRow,HWindowColumn,HWindowWidth,HWindowH
//定义窗口ID
HTuple HWindowID;
//定义一个CRect类的对象,用于获取图像框的尺寸和位置
CWnd *pWnd = GetDlgItem(IDC_PIC_HWINDOW);
CDC *pDC = pWnd-&GetDC();
pWnd-&GetWindowRect(&Rect);
//设置显示窗口的起点和宽高
HWindowRow = 0;
HWindowColumn = 0;
HWindowWidth = Rect.Width();
HWindowHeight = Rect.Height();
//设定固定的窗口大小,而不是根据控件大小设定
//GetDlgItem(IDC_PIC_HWINDOW)-&SetWindowPos(NULL,0,0,322,242,SWP_NOZORDER | SWP_NOMOVE);
set_window_attr(&border_width&,0);
HWindowID = (Hlong)pWnd-&m_hW
open_window(HWindowRow,HWindowColumn,HWindowWidth,HWindowHeight,HWindowID,&visible&,&&,&m_HWindowID);
set_draw(m_HWindowID,&margin&);//设置显示模式是margin(边缘)
catch (HException& except)
TRACE(except.message);
如果要显示图像,
read_image(&m_LiveImage, &C:/Documents and Settings/Administrator/桌面/6870_3.jpg&);
disp_obj(m_LiveImage, m_HWindowID);
如果要显示视频
&& &&& &//open_framegrabber(&DirectShow&, 1, 1, 0, 0, 0, 0, &default&, 8, &rgb&, -1, &false&, &default&, &USB 视频设备&, 0, -1, &m_FGHandle);
&& &&& &open_framegrabber (&DirectShow&, 1, 1, 0, 0, 0, 0, &default&, 8, &rgb&, -1, &false&, &default&, &Vimicro USB PC Camera (ZC030x)&, 0, -1, &m_FGHandle);
&& &&& &//打开异步采集
&& &&& &grab_image_start (m_FGHandle, -1);
&& &&& &while (1)
&& &&& &&& &grab_image_async(&m_LiveImage, m_FGHandle, -1);//采集一副图像
&& &&& &&& &get_image_pointer1(m_LiveImage, NULL, NULL, &m_ImageWidth, &m_ImageHeight);//得到图像的宽高和指针
&& &&& &&& &set_part(m_HWindowID, 0, 0, m_ImageHeight - 1, m_ImageWidth -1);//使图像显示适应窗口大小
&& &&& &&& &disp_obj(m_LiveImage, m_HWindowID);&& &//窗口中显示图像
&& &&& &close_framegrabber(m_FGHandle);
&& &catch (HException& except)
&& &&& &TRACE(except.message);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:391025次
积分:7362
积分:7362
排名:第1853名
原创:333篇
转载:19篇
评论:145条
(1)(3)(30)(1)(2)(2)(1)(3)(1)(1)(8)(10)(1)(1)(6)(7)(7)(1)(7)(6)(5)(4)(6)(2)(1)(5)(1)(3)(8)(5)(5)(3)(3)(2)(15)(17)(23)(26)(55)(63)(1)halcon基本,vb,vc连接halcon读取图像,视频
halcon基本,vb,vc连接halcon读取图像,视频
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
halcon学习方法:安装完halcon之后,在开始里出现一些文档
看完就算是入门了,里面讲了大部分应用的需要的步骤及所用算法
quick_guide.pdf
快速入门halcon
hdevelop_users_guide.pdf
详细讲解在hdevelop中使用halcon,及hdevelop的操作
programmers_guide.pdf
详细讲解在高级语言中的使用halcon
reference_hdevelop.pdf
讲解各个算子
安装完halcon会自动添加一个环境变量%HALCONROOT%,比如指向C:\Program Files\MVTec\HALCON-10.0
在%HALCONROOT%\examples目录下是各种高级语言使用halcon的源码例子
http://blog.csdn.net/wgluser/article/category/1183275
.cn/s/articlelist__0_1.html
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
vb中使用halcon窗口加载图像
1.读取图像
[cpp] read_image&(Lena,&'F:/image/lena.jpg')&&get_image_size&(Lena,&Width,&Height)&&dev_close_window&()&&dev_open_window&(0,&0,&Width/2,&Height/2,&'black',&WindowHandle)&&set_display_font&(WindowHandle,&14,&'mono',&'true',&'false')&&dev_display&(Lena)&&disp_continue_message&(WindowHandle,&'black',&'true')&&stop&()&&2.导出vb的bas代码
选择文件/导出,弹出
注意:此处选择使用halcon窗口
3.vb中调用read_image.bas
先看一下read_image.bas的内容,可知在需要的地方直接调用main即可
[vb] ...&&&&'&Main&procedure&&Private&Sub&action()&&&&&&'&Local&iconic&variables&&&&Dim&ho_Lena&As&HUntypedObjectX&&&&&&&&'&Local&control&variables&&&&Dim&hv_Width&As&Variant,&hv_Height&As&Variant&&&&Dim&hv_WindowHandle&As&Variant&&&&&&&&Call&Op.ReadImage(ho_Lena,&"F:/image/lena.jpg")&&&&Call&Op.GetImageSize(ho_Lena,&hv_Width,&hv_Height)&&&&If&COMExpWinHandleStack.IsOpen()&Then&&&&&&Op.CloseWindow&(COMExpWinHandleStack.Pop())&&&&End&If&&&&Call&Op.SetWindowAttr("background_color",&"black")&&&&Call&Op.OpenWindow(0,&0,&Tuple.TupleDiv(&_&&&&&&&&hv_Width,&2),&Tuple.TupleDiv(hv_Height,&2),&0,&"",&"",&hv_WindowHandle)&&&&COMExpWinHandleStack.Push&(hv_WindowHandle)&&&&Call&set_display_font(hv_WindowHandle,&14,&"mono",&"true",&"false")&&&&If&COMExpWinHandleStack.IsOpen()&Then&&&&&&Call&Op.DispObj(ho_Lena,&COMExpWinHandleStack.GetActive())&&&&End&If&&&&Call&disp_continue_message(hv_WindowHandle,&"black",&"true")&&&&HDevelopStop&&End&Sub&&&&&#If&Not&NO_EXPORT_APP_MAIN&Then&&Sub&InitHalcon()&&&&'&Default&settings&used&in&HDevelop&&&&Call&Op.SetSystem("do_low_error",&"false")&&End&Sub&&&&Sub&Main()&&&&Call&InitHalcon&&&&Call&action&&End&Sub&&&#End&If&&3.1.新建一个exe的project,然后保存,然后添加read_image.bas文件到此project
3.2.添加halcon/com控件:选择project/components,弹出的菜单中
3.3.在工具箱中会出现HWindowXCtrl控件,拖进form1,然后再拖一个commandbutton,
双击commanbutton,加入代码
[vb] Private&Sub&Command1_Click()&&Call&Main&&End&Sub&&3.4.按F5运行程序,然后单击command1,弹出
这是一个halcon界面库构造的窗口,脱离vb窗口的。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
vb中使用hwindowxctrl的窗口加载图像
在上面第2步选择使用导出模板。
导出的代码如下,可知需要调用的过程是inithalcon和runhalcon
[vb] ...&&'&Main&procedure&&Private&Sub&action()&&&&&&'&Local&iconic&variables&&&&Dim&ho_Lena&As&HUntypedObjectX&&&&&&&&'&Local&control&variables&&&&Dim&hv_Width&As&Variant,&hv_Height&As&Variant&&&&Dim&hv_WindowHandle&As&Variant&&&&&&Call&Op.ReadImage(ho_Lena,&"F:/image/lena.jpg")&&&&Call&Op.GetImageSize(ho_Lena,&hv_Width,&hv_Height)&&&&'dev_close_window(...);&&&&'dev_open_window(...);&&&&Call&set_display_font(hv_ExpDefaultWinHandle,&14,&"mono",&"true",&"false")&&&&Call&Op.DispObj(ho_Lena,&hv_ExpDefaultWinHandle)&&&&Call&disp_continue_message(hv_ExpDefaultWinHandle,&"black",&"true")&&&&HDevelopStop&&End&Sub&&&&&&&&Sub&InitHalcon()&&&&'&Default&settings&used&in&HDevelop&&&&Call&Op.SetSystem("do_low_error",&"false")&&End&Sub&&&&Sub&RunHalcon(ByRef&Window&As&HWindowX)&&&&hv_ExpDefaultWinHandle&=&Window.HalconID&&&&Call&action&&End&Sub&&在上面的3.3中拖入一个commandbutton2,双击添加代码
[vb] Private&Sub&Form_Load()&&&&&&Call&InitHalcon&&End&Sub&&&&Private&Sub&Command2_Click()&&Call&RunHalcon(HWindowXCtrl.HalconWindow)&&End&Sub&&
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
vb中使用hwindowxctrl的窗口加载视频
1.插入摄像头,只要qq视频模块可以使用的摄像头,halcon基本都可以使用吧
2.在halcon中新建一个工程,文件/新程序
3.选择助手/打开新的imageaquisition,点击检测,会检测到directshow
观察连接标签栏里已经识别出中微星的摄像头,可以点击连接,实时查看一下。
颜色空间中可以选择以灰度方式采集图像。
4.选择生成代码标签,如下。同步采集。
选择插入代码,如下
[vb] *&Code&generated&by&Image&Acquisition&01&&open_framegrabber&('DirectShow',&1,&1,&0,&0,&0,&0,&'default',&8,&'rgb',&-1,&'false',&'default',&'Vimicro&USB&PC&Camera&(ZC030x)',&0,&-1,&AcqHandle)&&while&(true)&&&&&&grab_image&(Image,&AcqHandle)&&&&&&*&Do&something&&endwhile&&close_framegrabber&(AcqHandle)&&其中
open_framegrabber用于打开摄像头并配置,此函数在调用时会测试要指定的设备,并锁定该设备。之后可以使用grab_image, grab_data, grab_image_async, or grab_data_async获取图像,然后处理。使用完之后需要用close_framegrabber释放,否则别的进程无法使用
grab_image采集图像到Image
close_framegrabber 关闭设备
在grab_image (Image, AcqHandle)后面加一句dev_display(Image),把图像显示出来
5.导出vb代码
[vb] ...&&'&Main&procedure&&Private&Sub&action()&&&&&&'&Local&iconic&variables&&&&Dim&ho_Image&As&HUntypedObjectX&&&&&&&&'&Local&control&variables&&&&Dim&hv_AcqHandle&As&Variant&&&&&&'Code&generated&by&Image&Acquisition&01&&&&Call&Op.OpenFramegrabber("DirectShow",&1,&1,&0,&0,&0,&0,&"default",&8,&"rgb",&-1,&_&&&&&&&&"false",&"default",&"Vimicro&USB&PC&Camera&(ZC030x)",&0,&-1,&hv_AcqHandle)&&&&Do&While&1&&&&&&Call&Op.GrabImage(ho_Image,&hv_AcqHandle)&&&&&&Call&Op.DispObj(ho_Image,&hv_ExpDefaultWinHandle)&&&&&&'Do&something&&&&&&#If&USE_DO_EVENTS&Then&&&&&&'&Please&note:&The&call&of&DoEvents()&is&only&a&hack&to&&&&&&'&enable&VB&to&react&on&events.&Please&change&the&code&&&&&&'&so&that&it&can&handle&events&in&a&standard&way.&&&&&&DoEvents&&&&&&#End&If&&&&Loop&&&&Call&Op.CloseFramegrabber(hv_AcqHandle)&&End&Sub&&&&&&&&Sub&InitHalcon()&&&&'&Default&settings&used&in&HDevelop&&&&Call&Op.SetSystem("do_low_error",&"false")&&End&Sub&&&&Sub&RunHalcon(ByRef&Window&As&HWindowX)&&&&hv_ExpDefaultWinHandle&=&Window.HalconID&&&&Call&action&&End&Sub&&vb中调用方式很简单仍然是inithalocn和runhalcon
把read_camera.bas加进vb,添加代码
[vb] Private&Sub&Form_Load()&&&&&&Call&InitHalcon&&End&Sub&&&&Private&Sub&Command3_Click()&&Call&RunHalcon(HWindowXCtrl.HalconWindow)&&End&Sub&&
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
需要注意的问题,
在hdevelop中的stop命令导入到vb.bas就变成HDevelopStop
HDevelopStop有两个版本实现,一个是空函数(使用halcon窗口导出时),一个是如下(使用导出模板时)
[vb] Public&Sub&HDevelopStop()&&&&Call&MsgBox("Press&button&to&continue",&vbYes,&"Program&stop",&"",&1000)&&End&Sub&&
在采集视频时,程序退出之前需要close_framegrabber,否则会出错
halcon error#5322:image aquisition:timeout.
此时需要重插一下camera
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
halcon播放avi视频
/******************************************************************/
vc使用halcon
使用hdevelop导出halcon程序的c++代码之后,比如
[cpp] read_image&(image,&'C:/Documents&and&Settings/Administrator/桌面/vision/IMG_436.bmp')&&rgb1_to_gray&(image,&GrayImage)&&dev_set_color('blue')&&*bin_threshold&(GrayImage,&Region)&&threshold(GrayImage,Region,100,255)&&area_center&(Region,&Area,&Row,&Column)&&生成c++代码
[cpp] ///////////////////////////////////////////////////////////////////////////////&&//&&File&generated&by&HDevelop&for&HALCON/C++&Version&10.0&&///////////////////////////////////////////////////////////////////////////////&&&&&&&&#include&"HalconCpp.h"&&&&&&&&using&namespace&H&&&&&&#ifndef&NO_EXPORT_MAIN&&//&Main&procedure&&&void&action()&&{&&&&using&namespace&H&&&&&&//&Local&iconic&variables&&&&&Hobject&&image,&GrayImage,&R&&&&&&&&//&Local&control&variables&&&&&HTuple&&Area,&Row,&C&&&&&&read_image(&image,&"C:/Documents&and&Settings/Administrator/桌面/vision/IMG_436.bmp");&&&&rgb1_to_gray(image,&&GrayImage);&&&&if&(HDevWindowStack::IsOpen())&&&&&&set_color(HDevWindowStack::GetActive(),"blue");&&&&bin_threshold(GrayImage,&&Region);&&&&area_center(Region,&&Area,&&Row,&&Column);&&&&}&&&&&&#ifndef&NO_EXPORT_APP_MAIN&&int&main(int&argc,&char&*argv[])&&{&&&&using&namespace&H&&&&//&Default&settings&used&in&HDevelop&(can&be&omitted)&&&&&set_system("do_low_error","false");&&&&action();&&&&return&0;&&}&&#endif&&&&&&#endif&&
新建一个对话框mfc程序(vc2008),添加一个按钮button1,加入如下代码(我将action函数稍微改了一下)
当然先要#include "HalconCpp.h"
[cpp] //&Main&procedure&&&double&action(&char&*&p)&&{&&&&&&using&namespace&H&&&&&&//&Local&iconic&variables&&&&&&&Hobject&&image,&GrayImage,&R&&&&&&&&//&Local&control&variables&&&&&&&HTuple&&Area,&Row,&C&&&&&&&&read_image(&image,&p);&&&&&&rgb1_to_gray(image,&&GrayImage);&&&&&&if&(HDevWindowStack::IsOpen())&&&&&&&&&&set_color(HDevWindowStack::GetActive(),"blue");&&&&&&//bin_threshold(GrayImage,&&Region);&&&&&&threshold(GrayImage,&&Region,50,255);&&&&&&area_center(Region,&&Area,&&Row,&&Column);&&&&&&double&d=Area[0];&&&&&&return&d;&&&&}&&&&&&void&CabcDlg::OnBnClickedButton1()&&{&&&&&&//&TODO:&在此添加控件通知处理程序代码&&&&&&double&d=action("C:/Documents&and&Settings/Administrator/桌面/vision/IMG_436.bmp");&&&&&&CString&&&&&&&str.Format("%f",d);&&&&&&AfxMessageBox(str);&&}&&
编译程序之前需要先设置一下include和链接环境,对于vc2008
工具/选项/项目解决方案/vc++目录/包含文件/&& 添加
C:\Program Files\MVTec\HALCON-10.0\include
C:\Program Files\MVTec\HALCON-10.0\include\cpp
工具/选项/项目解决方案/vc++目录/库文件/&& 添加
C:\Program Files\MVTec\HALCON-10.0\lib\x86sse2-win32
然后执行即可。
vc使用picture control显示halcon采集的图像
1.在对话框中添加一个picture control,比如IDC_PIC_HWINDOW
2.在xxdlg.h中添加&&&
&& &HTuple m_HWindowID;//picture control经过处理之后标示符,以后显示图像时,直接显示在m_HWindowID即可。
&& &HTuple m_FGHandle,m_ImageWidth, m_ImageH//m_FGHandle是视频设备
&& &Hobject m_LiveI//从图片或视频中抓取图像到这个变量里面
3.在xxdlg.cpp中添加初始化picture control的函数。可以在OnInitDialog函数中调用之。
[cpp] //&初始化HALCON显示窗口&&void&CabcdDlg::InitHalconWindow(void)&&{&&&&&&//定义显示的起点和长宽高&&&&&&HTuple&HWindowRow,HWindowColumn,HWindowWidth,HWindowH&&&&&&//定义窗口ID&&&&&&HTuple&HWindowID;&&&&&&&&&&//定义一个CRect类的对象,用于获取图像框的尺寸和位置&&&&&&CRect&R&&&&&&CWnd&*pWnd&=&GetDlgItem(IDC_PIC_HWINDOW);&&&&&&CDC&*pDC&=&pWnd-&GetDC();&&&&&&pWnd-&GetWindowRect(&Rect);&&&&&&&&&&//设置显示窗口的起点和宽高&&&&&&HWindowRow&=&0;&&&&&&HWindowColumn&=&0;&&&&&&HWindowWidth&=&Rect.Width();&&&&&&HWindowHeight&=&Rect.Height();&&&&&&//设定固定的窗口大小,而不是根据控件大小设定&&&&&&//GetDlgItem(IDC_PIC_HWINDOW)-&SetWindowPos(NULL,0,0,322,242,SWP_NOZORDER&|&SWP_NOMOVE);&&&&&&try&&&&&&{&&&&&&&&&&set_window_attr("border_width",0);&&&&&&&&&&HWindowID&=&(Hlong)pWnd-&m_hW&&&&&&&&&&open_window(HWindowRow,HWindowColumn,HWindowWidth,HWindowHeight,HWindowID,"visible","",&m_HWindowID);&&&&&&&&&&set_draw(m_HWindowID,"margin");//设置显示模式是margin(边缘)&&&&&&}&&&&&&catch&(HException&&except)&&&&&&{&&&&&&&&&&TRACE(except.message);&&&&&&}&&}&&
如果要显示图像,
[cpp] read_image(&m_LiveImage,&"C:/Documents&and&Settings/Administrator/桌面/6870_3.jpg");&&disp_obj(m_LiveImage,&m_HWindowID);&&&
如果要显示视频
[cpp] &&&&try&&&&&&{&&&&&&&&&&//open_framegrabber("DirectShow",&1,&1,&0,&0,&0,&0,&"default",&8,&"rgb",&-1,&"false",&"default",&"USB&视频设备",&0,&-1,&&m_FGHandle);&&&&&&&&&&open_framegrabber&("DirectShow",&1,&1,&0,&0,&0,&0,&"default",&8,&"rgb",&-1,&"false",&"default",&"Vimicro&USB&PC&Camera&(ZC030x)",&0,&-1,&&m_FGHandle);&&&&&&&&&&//打开异步采集&&&&&&&&&&grab_image_start&(m_FGHandle,&-1);&&&&&&&&&&&&&&&&&&&&while&(1)&&&&&&&&&&{&&&&&&&&&&&&&&grab_image_async(&m_LiveImage,&m_FGHandle,&-1);//采集一副图像&&&&&&&&&&&&&&get_image_pointer1(m_LiveImage,&NULL,&NULL,&&m_ImageWidth,&&m_ImageHeight);//得到图像的宽高和指针&&&&&&&&&&&&&&set_part(m_HWindowID,&0,&0,&m_ImageHeight&-&1,&m_ImageWidth&-1);//使图像显示适应窗口大小&&&&&&&&&&&&&&disp_obj(m_LiveImage,&m_HWindowID);&&&&//窗口中显示图像&&&&&&&&&&}&&&&&&&&&&&&close_framegrabber(m_FGHandle);&&&&&&}&&&&&&catch&(HException&&except)&&&&&&{&&&&&&&&&&TRACE(except.message);&&&&&&}&&
发表评论:
TA的最新馆藏[转]&[转]&}

我要回帖

更多关于 axte3dwindow1 的事件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信