-- 作者:菜鸟
-- 发布时间: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()
|