第一种方法:
读了一个单一图像:
read_image(Image,'fabrik')
这种方式可以快速的读取软件自身携带的库图像文件,系统设定了库图像映像文件的快速读取方式,我们也可以通过绝对地址的方式来读取指定的目录文件:
read_image(Image1,'E:/Halcon一日一练/参考资料/images/图片1.jpg')
图像设定的映像文件目录可以进行关闭,set_system函数可以对映像文件目录进行关闭,关闭之后必须读取图像的绝对地址,否则,系统将会报错,
set_system('image_dir','false')//关闭图像映像文件
read_image(Image,'fabrik')//此时系统会报错
在关闭图像文件目录的情况下,再读取图像将会出现异常,此时我们需要重新设置默认读取文件的目录:
set_system('image_dir','C:\\Program Files\\MVTec\\HALCON-12.0\\images')
read_image(Image,'fabrik')
如果想要读取自身设定的图像目录,则是如下方式:
set_system('image_dir','E:\\Halcon一日一练\\参考资料\\images')
read_image(Image,'图片1')
操作完成后一定要将系统设定回来,并确认目录定义符一定是上斜线
set_system('image_dir','C:\\Program Files\\MVTec\\HALCON-12.0\\images')
set_system('image_dir,'true')
第2种方法:
如果要读取一组图像,则需要对图像文件的保存名称有一定的规则要求,一般按以下格式设定:‘name_number.imageform'
首先保存为图像的名称,下划线后面追加图像数字序列,这种方式有利于图像的循环读取,看看下面的语句:
for j:= 1 to 9 by 1
read_image(Image,'fonts/arial_a'+J+'.png')//读取图像
dev_display(Image)//显示图像
stop()//暂停
endfor
我们将C:\Program Files\MVTec\Halcon-12.0\images\fonts目录下的9个图像文件依次读取并且显示出来,中间的+号代表了字符间的合并。
第三种方法:
还有一种更好的方法,可以依次读取目录中的所有文件,这种采用虚拟设备读取文件内容的方式,可以直接读取文件中所有的图像,这种虚拟设备的图像读取方式,读取外部设备图像的方式非常接近,只不过获取图像的设备设置为文件方式,操作的方法和外部设备类似。
例程如下:
tuple_enviroment('HALCONROOT',RootDir)//文件目录
DirName:=RootDir+'\images'
*打开文件设备
open_framegrabber('File',-1,-1,-1,-1,-1,-1, 'default', -1, 'default', -1, 'default', DirName, 'default', -1, -1, AcqHandle)
while(1)
get_framegrabber_param(AcqHandle,'device',CurrentFileName)//设置图像设备对应的文件目录
grab_image(Image,AcqHandle)//读取文件
endwhile
close_framegrabber(AcqHandle)//关闭设备
open_framegrabber 函数介绍
open_framegrabber( : : Name, HorizontalResolution, VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn, Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger, CameraType, Device, Port, LineIn : AcqHandle)
此函数 open_framegrabber用于打开并配置所选的图像采集设备。
在此过程中,图像采集设备的连接会被检查,并锁定,如果需要,为数据缓冲区保留内存。
实际的图像抓取是通过grab_image、grab_data、grab_image_async或grab_data_async来完成。
如果不再需要图像采集设备,则应通过close_framegrabber关闭该设备,并将其释放给其他进程使用。
部分图像 采集设备支持多实例。
name:图像采集设备的名称。如'DirectShow' DirectFile
HorizontalResolution, VerticalResolution:图像采集接口的水平垂直分辩率。
绝对值或1表示全分辨率,2表示半分辨率,4表示四分之一分辨率
ImageWidth:采集图像的长,用绝对值表示,或0表示HorizontalResolution - 2*StartColumn
ImageHeight:采集图像的宽,用绝对值表示,或0表示VerticalResolution - 2*StartRow
StartRow, StartColumn图像起点坐标。
Field表示获取图像是一半还是全图。默认DEFAULT。
BitsPerChannel图像一个通道内像素的比特数。一般为8 位。
ColorSpace图像的颜色空间,相机支持彩色图像的话,一般为rgb或gray
Generic通用参数,一般不用传递-1.
ExternalTrigger是否外部触发。
CameraType使用相机的类型,一般传递default,表示特定设备默认值。
Device与图像采集设备相连接的设备。如采集助手检测出USB相机,[0] USB2.0 HD UVC WebCam,那么这个名称就可以传递使用。
Port 与图像 采集设备相连接的端口。
LineIn 多路相机输入 线,传递-1表示特定硬件默认值。
AcqHandle为输出句柄,后续可用于采集图像。