我有几百张像这样的照片:
它们位于单个文件夹中,我试图在Matlab中找到一种方法来自动分析点(700,755)
处每个图像的像素值。我知道如何一次一个地做这件事:
rgb=impixel(p,700,755)
这将返回图像特定点的红绿蓝值。我对Matlab很陌生......什么样的代码会分析文件夹中的每个图像并将RGB
值保存在表/数组中的不同行上?
此外,我使用像素区域工具选择了一个区域:' [696.463836477986 750.095011390851 19.9889937106933 13.3672527600921]'如何分析该区域中的所有像素值并获取统计数据(最小值,最大值,平均值等)...再加上我在文件夹中拥有的所有200张图像?
我很感激帮助! AP
答案 0 :(得分:2)
impixel
也适用于所有图片:
impixel(I)
或特定(像素)列和行:
impixel(I,c,r)
但首先需要将图像读入矩阵。 imread
函数返回数组中图像的所有RGB
数据:
A = imread(filename, fmt)
它从字符串grayscale
指定的文件中读取color
或filename
图像。 A是包含图像数据的数组。如果文件包含“灰度”图像,则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]);