【问题标题】:Matlab: pixel values of multiple .jpg imagesMatlab:多个.jpg图像的像素值
【发布时间】:2014-04-27 21:28:03
【问题描述】:

我有几百张这样的图片:

它们位于一个文件夹中,并试图在 Matlab 中找到一种方法来自动分析每个图像在点 (700,755) 处的像素值。我知道如何一次做一个,例如:

rgb=impixel(p,700,755)

这将返回图像在该特定点的红-绿-蓝值。我对 Matlab 很陌生...哪段代码会分析文件夹中的每个图像并将 RGB 值保存在表/数组中的单独行上?

另外,我使用像素区域工具选择了一个区域:'[696.463836477986 750.095011390851 19.9889937106933 13.3672527600921]' 如何分析该区域中的所有像素值并获取统计信息(最小值、最大值、平均值等)。 ..plus 对文件夹中的所有 200 张图像执行此操作吗?

感谢您的帮助! 美联社

【问题讨论】:

    标签: image matlab image-processing jpeg


    【解决方案1】:

    impixel 也适用于所有图像:

    impixel(I)
    

    或针对特定(像素)列和行:

    impixel(I,c,r)
    

    但您需要先将图像读入矩阵。 imread函数,返回数组中图像的所有RGB数据:

    A = imread(filename, fmt) 
    

    它从字符串filename 指定的文件中读取grayscalecolor 图像。 A 是包含图像数据的数组。如果文件包含“灰度”图像,则 A 是一个“M×N”数组。如果文件包含“真彩色”图像,则 A 是一个“M×N×3”数组。 (3: R-G-B)

    要读取文件夹中的一堆文件,请执行以下操作:

    files = dir('*.jpg');
    for i=1:length(files)
        eval(['imread ' files(i).name]);
    end
    

    您可以使用imcrop 函数来裁剪您拥有的图像:

    使用鼠标:

    I2 = imcrop(I)
    

    或使用尺寸:

    I2 = imcrop(I,[75 68 130 112]);
    

    【讨论】:

    • 如何将 impixel 用于单个文件夹中的所有图像?
    • 好的...所以 imread 将其全部读取到一个矩阵中并且上面的代码有效...但是现在我如何从 imread 刚刚执行的每个矩阵中提取单个像素值?跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多