欢迎来到天天文库
浏览记录
ID:16016933
大小:1.88 MB
页数:22页
时间:2018-08-07
《机器视觉系统教程-----谢彬芬》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、条件1.采集卡、数据线、大恒相机2.Halcon软件、VisualC++6.0、采集卡驱动程序二、采图1.在主机安装好采集卡,用数据线把相机和主机连接起来,然后安装采集卡驱动程序。2.打开相机控制软件,选择你需要拍照的相机点击工具栏的连续采集,采集开始拍照(其实是定时触发相机拍照)在画面单击右键,点击最佳匹配,显示最大AOI(即相机分辨率)。调节相机、光源、还有在相机控制软件设置显示需要的快门时间增益等其他参数,直到画面出现理想图像。此时,需要记下相机序列号、快门时间以及单位,还有增益的数值,及相机分辨率,这是
2、都是后续VC编程需要的参数。记完参数以后,点击停止采集然后保存图像,至此,整个采图过程已经完成。一、Halcon1.用Halcon打开刚刚保存的图片,并作需要的算法处理。本次教程为了简单,算法只是在刚刚拍照的图片上显示Message,2.效果1.认为效果没有问题时,即可把程序导出成C++文件。用VC做界面1.打开VC6.0,新建一个TEST名的MFCAppWizard(exe),点击OK2.选择基于Dialog,直接点击Finish3.如下显示:1.把Dialog上不需要的控件删除,在控件栏上选择Picture和B
3、uttom两个控件增添到Dialog上,命名ID分别是IDC_VISIONIDC_BTN_TRIGGER,并重新布局控件位置以及尺寸大小。注意Picture控件的宽和高尺寸比例一定要跟刚刚上面获得的相机分辨率对应比例一样,否则显示图像比例失真。完成后效果如下:1.至此,本次示范例程的整个框架已经完成,接下来就是插入代码,然让它工作。1.找到StdAfx.h,把下面代码写进去,注意相机序列号和尺寸必须与你正在使用的一样,否则程序启动不了。1.找到StdAfx.cpp,,把刚刚在StdAfx.h定义的disp_mes
4、sage,写上函数体1.接下来将李工封装好的相机类以及Halcon类导入到程序里面。首先把复制到TEST的文件夹里面,如下9.然后在VC程序里面点击菜单栏的Project—AddToProject—Files,找到TEST的文件夹,并把刚刚复制的相机类和Halcon类的头文件和CPP文件导入至程序里面。此时,你会发现,已经成功添加两个类。10.然后分别找到相机类的cpp文件和Halcon的cpp文件,包含"stdafx.h""TEST.h"这两个头文件,注意是"TEST.h"不是"TESTDlg.h"11.然后把相
5、机控制和Halcon的运行需要Dll和lib文件,以及对应的头文件,拷贝到TEST目录下如下:上面的Dll,Lib和头文件一般在安装目录里面可以找到。12.然后在VC程序里面点击菜单栏的Project—AddToProject—Files,找到TEST的文件夹,文件类型选择.lib,把图示的5个lib文件导入去如下:即成功导入。此时编译,没有报错,但程序还不能使用,因为没有把不同的类连接起来。13.找到头文件TESTDlg.h,包含相机类的头文件和Halcon类的头文件,在TESTDlg类定义内加入以下内容:14.
6、然后在TESTDlg.cpp文件里面,把OnSnapFinish()和GetPicFromCamera()两个成员函数的函数体写进去。15.找到TESTDlg的初始化函数,初始化函数上面在BEGIN_MESSAGE_MAP与END_MESSAGE_MAP之间加入如下代码。然后在初始化函数里面添加以下内容16.为软触发Buttom添加一个响应函数17.编译一下成功通过,启动程序,按下软触发,成功拍照。有时候相机不响应或者显示图像很黑,原因是,相机类里面的相机增益和快门时间跟你刚刚拍照时的参数差异比较大,解决方法是直接
7、在相机类文件修改参数18.为安全起见,使用完程序要释放相机,重载Distory函数,在窗口销毁时,自动释放相机资源。19.打开在halcon导出的Test.Cpp文件,找到action函数,你会发现所有你刚刚在halcon写的算法都在这函数上,而且导出代码基本上跟原来的是一样。并且找到你刚刚写的核心Halcon算法,20.返回VC程序,在Halcon类的头文件里定义你本次功能需要的函数名21.在halcon类的cpp文件里定义该函数的函数体,主要把刚刚导出的核心代码写进去。22.然后回到相机拍摄完成相应函数。调用刚
8、刚插入的函数即可。23.编译运行程序,点击软触发,效果如下:说明已经完成本次程序
此文档下载收益归作者所有