Matlab 如何计算图像是否为红色?

Matlab 如何计算图像是否为红色?,matlab,colors,Matlab,Colors,我在路上有一些照片 我的程序必须计算有多少图片是红色的 我开始循环,但我不知道如何检测图片是否为红色 这是我的循环: sdirectory = 'E:\SEMESTER 7\Computer Vision\Tugas\UAS - Pencocokan Objek'; namafile = dir([sdirectory '/*.jpg']); jml_obj = [] for k = 1:length(namafile) filename = [sdirectory '/' namafi

我在路上有一些照片

我的程序必须计算有多少图片是红色的

我开始循环,但我不知道如何检测图片是否为红色

这是我的循环:

sdirectory = 'E:\SEMESTER 7\Computer Vision\Tugas\UAS - Pencocokan Objek';
namafile = dir([sdirectory '/*.jpg']);
jml_obj = []
for k = 1:length(namafile)
    filename = [sdirectory '/' namafile(k).name];
    img = imread(filename);
    red = img(:,:,1);
    if(size(img,3)==3) %i think here is the key
        jml_obj=[jml_obj 1]
    else
        jml_obj=[jml_obj 0]
    end
end
jml_obj;
jumlah=sum(jml_obj);
textLabel1=  sprintf('Jumlah %i ',jumlah);
set(handles.jml, 'String', textLabel1);

如果在彩色图像中阅读,则所有图像都将具有红色、绿色和蓝色通道,因此SizeMg,3将始终等于3。实际上,您必须检查每个图像的像素内容,以确定它是否有红色


但在此之前,您必须定义像素为红色意味着什么。你说的是近似红色,还是像RGB255,0,0这样的纯红色?一旦你有了红色的定义,你可以循环每个图像的像素,并检查是否至少有一个像素符合你的定义。如果是这样,那么您可以增加计数器。

我说的是在RGB空间中确定颜色可能很棘手,因此最好在颜色空间中检查相应的颜色。解释得很好。我将此逻辑添加到精细红色中,但它不起作用:ifimgm,n,1<80 | | | imgm,n,2>80 | | | | imgm,n,3>100红色不是一个值@Savithru意味着您应该定义一个可以接受为红色的值范围,因为它不太可能在图像或甚至一组图像中找到精确的红色值。使用HSV而不是RGB完成此任务的最简单方法。正如萨维特罗所说