我在IDL中编写一个程序,需要从目录中读取n个图像(每个m个像素),将它们转换为灰度,将每个图像连接成一个矢量,然后从数据中形成一个m * n矩阵
到目前为止,我已设法读取单个图像并将其转换为灰度矢量,但我无法弄清楚如何将其扩展为读取多个图像文件。
任何人都可以建议我如何调整我的代码才能做到这一点? (图像文件将具有相同的大小,并与方便的文件名存储在同一目录中 - 即testpicture1,testpicture2等)
由于
pro readimage
image = READ_IMAGE('Z:\My Documents\testpicture.jpg')
redChannel = REFORM(image[0, *, *])
greenChannel = REFORM(image[1, * , *])
blueChannel = REFORM(image[2, *, *])
grayscaleImage = BYTE(0.299*FLOAT(redChannel) + $
0.587*FLOAT(greenChannel) + 0.114*FLOAT(blueChannel))
imageVec = grayscaleImage[*]
end
答案 0 :(得分:2)
使用FILE_SEARCH
查找给定名称的图像名称和编号:
filenames = FILE_SEARCH('Z:\My Documents\testpicture*.jpg', count=nfiles)
您可能还需要声明一个数组来保存结果:
imageVec = bytarr(m, nfiles)
然后使用FOR
循环遍历文件,执行您正在执行的操作:
for f = 0L, nfiles - 1L do begin
; stuff you are already doing
imageVec[*, f] = grayscaleImage[*]
endfor