使用HALCON进行图像采集,相机怎么跟软件接上,初学者不懂啊,请前辈讲解讲解,多谢
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()