【问题标题】:Reading multiple images in IDL在 IDL 中读取多个图像
【发布时间】:2015-01-22 21:35:16
【问题描述】:

我正在用 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

【问题讨论】:

    标签: image idl-programming-language


    【解决方案1】:

    使用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
    

    【讨论】:

    • 感谢您的回复 - 这对我来说很有意义。
    • 我很清楚 mgalloy,“image = READ_IMAGE('filenames[f]')” 行是否可以作为 for 循环中的第一行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 2019-11-15
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多