如何读取文件夹中所有图像
我们在图像处理时,有时候需要模拟环境,即读取文件夹中的现有图像。我们也知道,图像有很多的类型,如BMP、PNG、JPG、JPEG、TIFF、JP2、GIF等。如果是使用文件夹对话框,一个一个的选择图像,那没问题可以人工选择想要的图像。又或者是使用路径来指定图像,也可以,这样也可以得到想要的图像。但是要自动的读取文件夹中的NI视觉支持的所有类型的所有图像,这个在LabVIEW环境中,是没有现成的函数的。在LabVIEW的编程》文件I/O》高级文件函数中,有一个罗列文件夹函数,这个函数可以将文件夹中的所有文件类型都罗列出来(可以包含隐藏的临时文件都罗列出来):
罗列文件夹函数
但是这个函数,在默认的空模式下,是会罗列所有的文件类型和文件夹的,如doc、xls等文件也会被罗列的,而这些肯定不是图像文件。所以还得使用此函数进行一定的改造才能满足要求。
罗列文件夹函数接线端说明
使用罗列文件夹函数的默认设置
在罗列文件夹函数的输入端中,有一个模式接线端,通过模式,可以指定需要读取的文件类型。这个模式可以使用具体的字符,只要与字符相同的文件都会被罗列出来(包含文件后缀),同时也可以使用通配符?和*,?代表了一个字符,*则代表了所有字符。如*.bmp表示罗列所有类型的bmp文件,而如果是1?.png,则只读取两个字符的文件名且第一字符必须是1的png文件。
罗列某个类型的所有图像
罗列指定部分文件名的图像文件
通过这样的方法,就可以罗列某一类的图像文件了,而要罗列多个文件类型的图像,则可以直接使用FOR循环即可满足要求,将上面罗列函数部分放置到一个FOR循环中,使用文件类型作为循环条件,即可罗列出文件夹中的所有图像类型。
罗列文件夹中所有类型图像的LabVIEW代码
如上图所示,即为罗列文件夹中所有类型的图像的代码。这里的模式是使用了多个文件类型组合的字符串来表示的,而每个类型之间,使用;进行分隔,这里的分隔号,必须使用统一的且不需要使用空格等字符(因为空格有可能是文件名本身的一个字符),以方便在后面的电子表格字符串至数组转换中能正常使用。在后面则使用电子表格字符串至数组转换函数,将模式中指定的图像文件类型,转换成数组,通配号使用;,这样就可以得到一个文件类型的数组,然后接入到FOR循环中,并使用此条件为循环条件且索引模式的值给FOR循环中的罗列夹函数。当然因为罗列文件名输出的是一个数组,因此还需要将新罗列的函数插入到数组中。
罗列文件夹中的所有图像效果展示
NI视觉支持常规的图像文件,如bmp、png、jgp、jp2、tif等类型的文件。至于其它一些文件,则需要确认是否支持,不被支持文件也是无法使用的。