基本流程:
用到的算子(以及算子中的重要参数释义):
算子菜单的方式
算子
-Image
-read_image()
read_image (Image, 'printer_chip/printer_chip_01')
默认为读取一幅示例图像,支持多种图像格式,详见help
查询帮助可知,该算子可以从本地文件读取一幅图像到变量image中或者读取多张到变量images中,也可以设置搜索路径
* Reading an image:
read_image(Image,'mreut')
* Reading 3 images into an image array:
read_image(Images,['ic0','ic1','ic2'])
* Setting of search path for images on '/mnt/images' and '/home/images':
set_system('image_dir','/mnt/images:/home/images')
快捷键
Ctrl+R打开一个读取图像的窗口,从中选择图像和设置变量(默认用图像文件名为变量名)
一个实例
read_image (Image, 'printer_chip/printer_chip_01')
read_image (Linux, 'C:/Users/Administrator/Pictures/Linux.png')
扩展与思考
如何将某目录下的所有图像读取到一个数组中,假设该目录下图像数量不固定
解析
利用采集助手批量读取文件夹下所有图像
代码生成——插入代码,如下:
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('C:/Users/Administrator/Pictures', ['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,tuple_regexp_select,read_image
其中,list_files列出给定目录下的所有文件,放到ImageFiles变量中(这里files限制了只列出指定目录下的文件,而不递归列出子目录文件,详见帮助);tuple_regexp_select筛选符合条件的/指定格式的文件
参数ignore_case表示忽视大小写;|ImageFiles|表示数组长度;ImageFiles[Index]表示数组元素引用,下标从0开始;图像格式后面的美元符号$表示什么?
现象:即便目录下有多张图像,但是图像窗口和变量窗口只显示最后读取的一幅
变量监视窗口显示可读取的所有图像数量
实际我的目录下有如下图像
可见jtif格式未被读取,因为正则表达式过滤筛选时为(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj),没有jtif格式。
问题
如何将支持格式的所有图像全部用新窗口显示出来?【用助手可生成代码,当然也可以自己写】
通过查阅资料(教材),显示图像的步骤基本为:
关闭窗口/清除窗口(防止显示多余的图像出来,比如我没有清除/关闭打开的图像显示窗口,则执行时多显示一次已经打开的图像)
获取图像宽高(为了设置窗口大小用,那么如何新建一个根据图像大小自动调整大小的窗口呢?用dev_resize_window_fit_image(Image,0,0,-1,-1)或者dev_resize_window_fit_size(0,0,Width,Height,-1,-1)均可