Halcon读取文件目录图像的三种方法

第一种方法:

读了一个单一图像:

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为输出句柄,后续可用于采集图像。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值