Halcon图像读取的方式

Halcon图像读取的三种方式

  • 利用read_image算子读取图像
    read_image(:Image:FileName:)
    Image:读取图像的变量名称;
    FileName:图像文件所在的路径;
    利用该算子读取图像有3种方式:
    1:利用CTRL+R快捷键打开读取图像对话框,选择文件名称所在路径及变量名称,选择语句插入位置,点击确定:
    在这里插入图片描述
    2:使用算子窗口调用read_image算子,选择文件名称所在的路径及变量名称,算子窗口如图所示:
    在这里插入图片描述
    3:利用for循环读取同一路径下的多张图片。首先声明一个Tuple数组保存文件名及路径,然后利用for循环依次读取Tuple数组保存路径下的图像。
*声明数组
ImagePath:=[]
*将文件名及路径保存到数组
ImagePath[0]:='C:/Users/Administrator/Desktop/PET/11.png'
ImagePath[1]:='C:/Users/Administrator/Desktop/PET/11.png'
ImagePath[2]:='C:/Users/Administrator/Desktop/PET/11.png'
*循环读取图像
for i := 0 to 2 by 1
    read_image (Image, ImagePath[i])
endfor
  • 利用采集助手批量读取文件夹下的所有图像
    点击菜单栏中的“助手”->“打开新的Image Acquisition”,点击"资源"选项卡中的“选择路径”,点击“代码生成”选项卡下的“插入代码”:
    在这里插入图片描述
    在这里插入图片描述
    插入的代码为:
* Image Acquisition 01: Code generated by Image Acquisition 01
* 遍历文件夹
list_files ('C:/Users/Administrator/Desktop/Image', ['files','follow_links'], ImageFiles)
*刷选指定格式的图像
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
*依次读取图像
for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    * Image Acquisition 01: Do something
endfor

算子的讲解:
list_files(::ImageDirectory,Extensions,Options:ImageFiles)
作用:遍历文件夹
ImageDirectory:文件夹路径
Extensions:文件扩展名
Options:搜索选项
ImageFiles:文件名数组
tuple_regexp_select(::Data,Expressiion:Selection)
作用:刷选指定格式的图像
Data:输入的文件名数组
Expression:文件筛选规则表达式
Selection:筛选出的文件名数组

  • 用采集助手采集图像
    用采集助手采集图像的步骤为:
    点击菜单栏中的“助手”
    点击“打开新的Image Acquisition”
    点击“图像获取接口”
    点击“自动检测接口”
    连接并实时采集
    插入代码:控制流有仅初始化、采集单幅图像、在循环中采集图像三种形式可以选择。采集模式有同步采集、异步采集两种模式。选择合适的控制流与采集模式点插入代码按钮:
    在这里插入图片描述

异步采集:

* Image Acquisition 03: Code generated by Image Acquisition 03
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'fabrik', 'default', 1, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
    grab_image_async (Image, AcqHandle, -1)
    * Image Acquisition 03: Do something
endwhile
close_framegrabber (AcqHandle)

同步采集:

* Image Acquisition 04: Code generated by Image Acquisition 04
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'fabrik', 'default', 1, -1, AcqHandle)
while (true)
    grab_image (Image, AcqHandle)
    * Image Acquisition 04: Do something
endwhile
close_framegrabber (AcqHandle)

算子的说明:
open_framegrabber(::Name,HorizontalResolution,VerticalResolution,Image-Width,ImageHeight,StartRow,StartColumn,Fieid,BitsPerChannel,ColorSpace,Generic,ExternalTrigger,CameraType,Device,Port,LineIN:Acqhandle)
作用:连接相机并设置相关参数
Name:图像采集设备的名称
HorizontalResolution:图像采集接口的水平分辨率
VerticalResolution:图像采集接口的垂直分辨率
ImageWidth和ImageHeight:图像的宽度和高度
StartRow和StartColumn:显示图像的起始坐标
Field:图像是一半还是完整的图像
BitsPerChannel:每像素比特数和图像通道
ColorSpace:图像通道模式
Generic:通用参数与设备细节部分的具体意义
ExternalTrigger:是否有外部触发
CameraType:使用相机的类型
Device:图像获取识别连接到的端口
LineIn:相机输入的多路转接器
AcqHandle:图像获取设备的句柄

猜你喜欢

转载自blog.csdn.net/weixin_42105843/article/details/121272364