机器视觉系统教程-----谢彬芬

更新时间:2023-08-30 20:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

谢彬芬

一、条件

1. 采集卡、数据线、大恒相机

2. Halcon软件、Visual C++6.0、采集卡驱动程序

二、采图

1. 在主机安装好采集卡,用数据线把相机和主机连接起来,然后安装采集卡驱动程序。

2. 打开相机控制软件,

选择你需要拍照的相机

点击工具栏的

连续采集实是定时触发相机拍照)

,采集开始拍照(其

在画面单击右键,点击最佳

谢彬芬

匹配,显示最大AOI(即相机分辨率)。

调节相机、光源、还有在相机控制软件设置显示需要的快门时间增益等其他参数,直到画面出现理想图像。

此时,需要记下相机序列号、快门时间以及单位,还

有增益的数值,及相机分辨率,这是都是后续VC编程需要的参数。

记完参数以后,点击停止采集

谢彬芬

然后保存图像,至此,整个采图过程已经完

成。

三、Halcon

1. 用Halcon打开刚刚保存的图片,并作需要的算法处理。本次教程为了简单,算法只是

在刚刚拍照的图片上显示Message,

2. 效果

谢彬芬

3. 认为效果没有问题时,即可把程序导出成C++文件。

谢彬芬

谢彬芬

四、用VC做界面

1. 打开VC6.0,新建一个TEST名的MFC AppWizard(exe),点击

OK

2.选择基于Dialog,直接点击

Finish

谢彬芬

3.如下显示:

4. 把Dialog上不需要的控件删除,在控件栏上选择Picture和Buttom两个控件

增添到Dialog上,命名ID分别是IDC_VISION \ IDC_BTN_TRIGGER,并重新布局控件位置以及尺寸大小。注意Picture控件的宽和高尺寸比例一定要跟刚刚上面获得的相机分辨率对应比例一样,否则显示图像比例失真。完成后效果如下:

谢彬芬

5. 至此,本次示范例程的整个框架已经完成,接下来就是插入代码,然让它工作。

谢彬芬

6. 找到StdAfx.h,把下面代码写进去,注意相机

序列号和尺寸必须与你正在使用的一样,否则程序启动不了。

谢彬芬

7. 找到StdAfx.cpp,,把刚刚在StdAfx.h定义的disp_message,

谢彬芬

写上函数体

8. 接下来将李工封装好的相机类以及Halcon类导入到程序里面。首先把

复制到TEST的文件夹里面,如下

9.然后在VC程序里面点击菜单栏的Project—Add To Project—Files,找到TEST的文件夹,并把刚刚复制的相机类和Halcon类的头文件和CPP文件导入至程序里面。

谢彬芬

此时,你会发现

经成功添加两个类。

10.然后分别找到相机类的cpp文件和Halcon的cpp文件,包含"stdafx.h" "TEST.h"这两个头文件,注意是"TEST.h"不是"TESTDlg.h"

,已

谢彬芬

11.然后把相机控制和Halcon的运行需要Dll和lib文件,以及对应的头文件,拷贝到TEST目录下

如下:

谢彬芬

上面的Dll,Lib和头文件一般在安装目录里面可以找到。

谢彬芬

12.然后在VC程序里面点击菜单栏的Project—Add To Project—Files,找到TEST的文件夹, 文件类型选择.lib,把图示的5个lib文件导入去

如下:即成功导入。此时编译,没有报错,

但程序还不能使用,因为没有把不同的类连接起来。

谢彬芬

13.找到头文件TESTDlg.h和Halcon类的头文件,

,包含相机类的头文件

在TESTDlg类定义内加入以下内容:

谢彬芬

14.然后在TESTDlg.cpp文件里面,把OnSnapFinish()和GetPicFromCamera()两个成员函数的函数体写进去。

谢彬芬

15.找到TESTDlg的初始化函数

在BEGIN_MESSAGE_MAP与END_MESSAGE_MAP之间加入如下代码。

,初始化函数上面

然后在初始化函数里面添加以下内容

谢彬芬

16.为软触发Buttom添加一个响应函数

17.编译一下成功通过,启动程序,按下软触发,成功拍照。有时候相机不响应或者显示图像很黑,原因是,相机类里面的相机增益和快门时间跟你刚刚拍照时的参数差异比较大,解决方法是直接在相机类文件修改参数

18.为安全起见,使用完程序要释放相机,重载Distory函数,在窗口销毁时,自动释放相机资源。

本文来源:https://www.bwwdw.com/article/6oti.html

Top