halcon读取图片的几种方式的总结

有人问到图片如果保存在数组中,调用的时候下标是为0还是1?

这个问题勇哥也是有点犹豫,对方信哲旦旦说下标应该为1起始,否则报错。

我猜应该是指的C#那边吧?

在halcon这边,对象数组确实从1开始,如果为0则报错。

image.png

那么图形变量可以下标访问吗?

答案是用向量变量。并且下标可以为0。

下面的代码梳理一下几个常见的错误。

read_image(img1,'E:/pic3.tiff')
read_image(img2,'E:/t1.tiff')

obj:=[]
//错误(1),会报图形变量应用在错误的位置。
tuple_add(obj,img1,obj)

obj1:={img1,img2}
//错误(2),向量变量不可以定义空,会报类型不确定
obj2:={}

//错误(3),向量不可以下标访问
dev_display(obj1[0])
//错误(4),向量不可以用select_obj算子访问
select_obj(obj1, ObjectSelected, 1)

//正确的向量下标访问方式,可以起始为0
img:=obj1.at(0)
dev_display(img)



转一篇写得比较好的讲解读取图片的各种方法,是个扫盲贴子。

===========================================================


HALCON读取图片共有4种方式,接下来将逐一进行介绍。

1 halcon读取图片方式一

1、选择菜单栏中的【文件】→【读取图像】,弹出新界面“读取图像”

image.png

2、选择“图像读取”界面中的文件夹标识,弹出新的界面“选择一个文件”,选择想要展示的图片,确认【打开】。图片显示于”读取界面”中,同时说明了图片的信息,宽373像素,高296像素,颜色类型byte,通道数值3,数值3表示1个像素在内存里占据3个字节,24位。“变量名称”可以修改,确认后选择【确定】。

image.png

3、此时“程序窗口”中自动生成语句

read_image (Abc, 'C:/Users/Public/Pictures/abc.bmp')  将图像文件读到变量里

1)“Abc”是图片的变量名称;

2)“,”此处的逗号是英文格式;

3)“空格”在逗号的后面有一个空格,不能省略;

4)“'C:/Users/Public/Pictures/abc.bmp'”在单引号内写入图片的路径


image.png

4、若此时想在“图形窗口”中显示图像的话,在“程序窗口”中输入“dev_display”,然后连续按下tab键2次,生成显示变量“Abc”的语句。点击菜单栏中的【单步跳过函数】,图形窗口中将会显示“Abc”变量。

image.png


5、有的时候会发现,有了read_image()函数,变量会直接在“图形窗口”中显示,该功能可以进行设置。选择菜单栏中的“可视化”→“更新窗口”→“在单步模式”,在单步模式下有5种选择:

1)总是:每一次读取之后,变量图片都会在图形窗口中显示,将之前的图像覆盖;

2)从不:必须通过调用显示函数“dev_display()”才可将图像显示在图形窗口中。

3)清空并显示:每一次都会将原来的图像擦掉,显示新图。

image.png

2 halcon读取图片方式二

      首先需要将“在单步模式”设置为“总是”,然后直接在“程序窗口”中输入指令“read_image(”,鼠标左键双击选中提示框里的程序,将想要显示的图像的路径写入双引号’’内即可。

image.png

此种方式下可以同时读取多张图片,采用数组的方式,首先将之前的‘路径’用数组符号[ ]括在里面,然后再添加其他图片路径,如下:

image.png


此时有两个图片,如果想要在“图形窗口”显示的话,有两种方法。

方法一需要进行设置,操作如下:选择下图所示的【图片变量】,单击右键,选择【显示目录】→【对象1】或【对象2】,从而切换显示在图形窗口中的图片。

image.png


方法二,输入程序“select_obj (Image1, ObjectSelected, 1)”,显示对象1;select_obj (Image1, ObjectSelected, 2),显示对象2.


3 halcon读取图片方式三

1、选择菜单栏中的【助手】→【打开新的image acquizition】,弹出新的界面

image.png

2、选择【图像文件】→【选择文件】,选中想要展示的图片,选择【代码生成】→【插入代码】,退出。

image.png


4 halcon读取图片方式四

      有时候,我们需要同时对大量的图片进行处理,按照上述方法操作,稍显麻烦。我们采取包含图片的文件夹,具体操作步骤如下:


1、选择菜单栏中的【助手】→【image acquisition】,弹出新界面,选择【图像文件】→【选择路径】,找到存储图片的文件夹,打开。

image.png

2、选择【代码生成】→【插入代码】,关闭窗口。此时,程序窗口中自动生成程序代码,如下图


函数原型:list_files(::Directory,Options:Files)

功能:列出目录中的所有文件

参数列表:


第1个参数Directory为输入变量,需要列出的目录名字

第2个参数Options为输入变量,默认值为files,建议值有:'files', 'directories', 'recursive', 'follow_links', 'max_depth 5', 'max_files 1000'

            Files:指定搜索的格式为文件

            Directories:指定搜索的格式为文件夹

            recursive:指定可以遍历子文件夹下的文件

            max_depth 5:指定遍历的深度

            max_files 1000:指定遍历的最大文件数目

第3个参数Files为输出变量,读取的文件


函数原型:tuple_regexp_select( : : Data, Expression : Selection)

功能:文件格式筛选

Data:被选择的文件路径数组

Expression:文件格式的筛选规则

                    (bmp|JPG)   筛选的文件格式

                    'ignore_case'        忽略大小写


Selection:选择出的文件路径数组

index, 索引号, 一般从0开始计数


————————————————

版权声明:本文为CSDN博主「机器人自动化控制」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/haier123888/article/details/103272465

本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864