首页 文章

Matlab:多个.jpg图像的像素值

提问于
浏览
0

我有几百张像这样的图像:

enter image description here

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

rgb=impixel(p,700,755)

这将返回图像特定点的红绿蓝值 . 我是Matlab的新手......什么样的代码会分析文件夹中的每个图像并将 RGB 值保存在表/数组的不同行中?

此外,我使用像素区域工具选择了一个区域:'[696.463836477986 750.095011390851 19.9889937106933 13.3672527600921]'如何分析该区域中的所有像素值并获取统计数据(最小值,最大值,平均值等)...为文件夹中的所有200张图片做到这一点?

我很感激帮助!美联社

1 回答

  • 2

    impixel 也适用于所有图像:

    impixel(I)
    

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

    impixel(I,c,r)
    

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

    A = imread(filename, fmt)
    

    它从字符串 filename 指定的文件中读取 grayscalecolor 图像 . A是包含图像数据的数组 . 如果文件包含'grayscale'图像,则A是'M-by-N'数组 . 如果文件包含'truecolor'图像,则A是'M-by-N-by-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]);
    

相关问题