以文本方式查看主题

-  机器视觉技术论坛|工业图像处理技术论坛  (http://www.jqsj.com/forum/index.asp)
--  【HALCON】  (http://www.jqsj.com/forum/list.asp?boardid=16)
----  [求助]怎么调用HALCON的图像采集功能?  (http://www.jqsj.com/forum/dispbbs.asp?boardid=16&id=3640)

--  作者:lovehui1120
--  发布时间:2010-4-25 15:06:28
--  [求助]怎么调用HALCON的图像采集功能?

使用HALCON进行图像采集,相机怎么跟软件接上,初学者不懂啊,请前辈讲解讲解,多谢


--  作者:菜鸟
--  发布时间:2011-11-2 12:39:42
--  

halcon本身提供了对很多相机的图像采集接口,比如大恒的图像采集卡及数字相机就有相应的DLL,一两句话即可完成图像采集,使用起来很方便。下面是halcon使用大恒图像采集卡的说明:

一.把文件夹中的HFGDhCard.dll文件复制到MVTec\\HALCON\\bin\\i586-nt4.例如,HALCON安装在C盘,则把文件复制到C:\\Program Files\\MVTec\\HALCON\\bin\\i586-nt4中。切记:不能更改HFGDhCard.dll文件名。
二.编写HALCON程序


编写HALCON程序(单卡,testsinglecard.dev)详细说明:
1.打开图像卡
open_framegrabber(\'DhCard\',-1,-1,-1,-1,0,0,\'default\',-1,\'rgb\',-1,\'default\',\'default\',default\',-1,-1,FGHandle)
第一个参数(Name)请输入‘DhCard\',不能更改,否则程序不能运行;
参数HorizontalResolution和VerticalResolution请取-1;
参数ImageWidth是指图像的宽度,可以自定义,但必须是4的倍数,并且不能超过768。默认情况下(取-1),宽度是768。
参数ImageWidth是指图像的高度,可以自定义,但必须是2的倍数,并且不能超过576。默认情况下(取-1),高度是576。
参数StartRow和参数StartColumn是指左上角坐标,可以自定义。一般情况下,都取0。
参数ColorSpace可以选\'gray\'或\'rgb\'。
    选择\'gray\':数据格式是ALL8BIT,黑白方式,8位/像素;
    选择\'rgb\' : 数据格式是RGB888,24位/像素。
剩余参数都取默认值。
默认情况下:是按FRAME方式和PAL制式进行采集。

2.设置相关参数(可选)
a.设置视频信号制式:  参数\'videostandard\'  可选值:\'PAL\',\'NTSC\'
示例:set_framegrabber_param(FGHandle,\'videostandard\',\'PAL\')
b.设置图象数据格式:  参数\'videoformat\',可选值:\'RGB565\',\'RGB888\',\'RGB8888\',\'ALL8BIT\',\'LIMITED8BIT\'
示例:set_framegrabber_param(FGHandle,\'videofomat\',\'RGB888\')
c.设置视频信号扫描方式:     参数\'scanmode\'  可选值:\'FRAME\',\'FIELD\'
示例:set_framegrabber_param(FGHandle,\'scanmode\',\'FRAME\')
d.设置晶振:           参数\'cryosc\'   可选值:\'CRY_OSC_35M\',\'CRY_OSC_28M\' 
示例:set_framegrabber_param(FGHandle,\'cryosc\',\'CRY_OSC_35M\')
e.设置视频信号源路类型:参数\'sourcetype\'  可选值\'COMPOSITE_VIDEO\',\'S_VIDEO\',\'COMPOSITE_VIDEO\'
视频信号源路参数\'sourceindex\' 从0开始。
示例:set_framegrabber_param(FGHandle,\'sourcetype\',\'COMPOSITE_VIDEO\')
      set_framegrabber_param(FGHandle,\'sourceindex\',0)
     两个同时指定才有效。
f.设置视频信号的显示调节参数 :  参数\'videoadtype\'   可选值:\'BRIGHTNESS\',\'CONTRAST\',\'HUE\',\'SATURATION\'。相应值的参数\'videoadval\', 值的范围:0-255
示例:set_framegrabber_param(FGHandle,\'videoadtype\',\'BRIGHTNESS\')
      set_framegrabber_param(FGHandle,\'videoadval\',128)
g.设置对图象扭曲进行微调:    参数:\'pllfrequency\'  值的范围:0-255
示例:set_framegrabber_param(FGHandle,\'pllfrequency\',100)

3.采集一帧图像
grab_image(Image,FGHandle)

4.得到图像大小:
get_image_pointer1(Image, Pointe1,Type1,Width1,Height1)
Width1得到图像宽度。
Height1得到图像高度。

5.取消图像窗口更新
dev_update_window(\'off\')

6.打开一个与图像大小一样的图像窗口(Graphics Window)
dev_open_window(0,0,Width1,Height1,\'white\',WindowHandle1)

7.开始图像采集
grab_image_start(FGHandle,-1)

8.进行图像采集
grab_image_async(Image,FGHandle,-1)
可以对采集到的图像(Image)进行图像处理。

9.显示图像
dev_display(Image)

步骤8和9应循环执行:
while(1)
grab_image_async(Image,FGHandle,-1)

....Image Process......

dev_display(Image)
endwhile

10.关闭图像卡
close_framegrabber(FGHandle)

11.关闭刚刚建立的图像窗口
dev_close_window()