前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Halcon学习(二) Halcon基本操作:批量读入本地文件夹内的图片

Halcon学习(二) Halcon基本操作:批量读入本地文件夹内的图片

作者头像
chaibubble
发布2022-05-07 09:10:21
1.2K0
发布2022-05-07 09:10:21
举报
文章被收录于专栏:深度学习与计算机视觉

批量读取: 在利用Halcon做图像处理时,批量读入图片是个很方便常用的功能,Halcon对其做了很好的支持。 在HDevelop的菜单栏中选择“助手”–“打开新的Image Acquisition”,如下:

这里写图片描述
这里写图片描述

选择“选择路径”,确定路径后选择“代码生成”,选择“插入代码”,改代码将被插入到程序窗口中:

这里写图片描述
这里写图片描述

代码如下:(在HDevelop中用*做注释,但是CSDN编译器中的代码片不识别*,所以我把下面程序的*换成了常规的注释方式,特此说明)

代码语言:javascript
复制
// Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('F:/芯片检测图库/图三', ['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

可以看到,其实软件自动生成的代码一共只有三个函数和一个循环控制,read_image()就不用说了,还剩下list_files()tuple_regexp_select()

list_files()用于遍历文件夹下的所有文件,它包含了3个参数:

代码语言:javascript
复制
list_files( : : Directory, Options : Files)

第一个参数为要遍历的文件夹的路径和名称; 第二个参数为处理选项,或者可以理解为规则,就是要获取什么类型的东西,怎么获取。该参数有默认值files,除此之外还有5个Suggested values: ‘directories’, ‘recursive’, ‘follow_links’, ‘max_depth 5’, ‘max_files 1000’; 注意上面的代码,这个参数的位置不止一个参数,它是这样写的['files','follow_links'],也就是说我们可以添加进入多条规则,这种写法貌似是把字符串写到了数组里,总之很方便,很神奇! 第三个参数为路径的输出,我们可以在变量窗口中看到:

这里写图片描述
这里写图片描述

下面我们说下第二个参数种不同的选项如何控制遍历内容: files为选择路径下的文件 directories为选择路径下的文件夹

代码语言:javascript
复制
所以如果我们向规则中同时写了files与directories,那么程序会将路径下的所有文件和文件夹都获取到。

recursive用于读取路径下文件夹内的所有东西(具体是文件还是文件夹由前面两个参数决定) max_depth 用于控制recursive的读取的层数,如果是max_depth 2,那么recursive可以获取路径下文件夹内的内容,而文件夹下的文件夹内的内容就获取不到了。因为最大深度为2,自一层就是路径,第二层就是路径下的文件夹,而路径下文件夹的文件夹是第三次。 max_files 用于控制获取的文件的个数,如果不添加该规则就是获取全部。

max_files 7

这里写图片描述
这里写图片描述

max_files 4

这里写图片描述
这里写图片描述

tuple_regexp_select() 用于筛选文件:

代码语言:javascript
复制
tuple_regexp_select( : : Data, Expression : Selection)

第一个参数为待选择的文件,在这里其实就是list_files()的输出; 第二个参数为指定的规则; 第三个参数为符合规则的输出;

第二个参数依旧是可以选择多条规则,这里就不多说了,指的注意的是\\的作用是转义字符,转义为 . ,就是name.jpg中的那个 . ,括号为所有格式的合集,格式之间用|分割:

代码语言:javascript
复制
['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case']

上述代码中另一个规则为’ignore_case’,为不区分大小写。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档