Image 检测图像通常是红色、绿色、蓝色还是黑色

Image 检测图像通常是红色、绿色、蓝色还是黑色,image,graphics,image-processing,colors,Image,Graphics,Image Processing,Colors,我正在处理红色、绿色、蓝色或黑色的小图像(四色卡片组中的思考卡排列)。确定图像颜色的快速算法是什么 有关输入的示例集,请参见,但图像可以缩放,这样它们就不会那么清晰 这些就是您正在使用的图像吗?如果是,是否所有图像上都有一个单独的彩色像素?我在想衣服在哪里。看看衣服应该放在哪里的像素,这会告诉你卡片的“颜色” 更通用的方法可能包括分析整个图像(缓慢但有效)、缩小图像比例并分析每个像素(如果最终图像较小但缩放可能会影响颜色,则更可行),或随机采样n个像素(或像素的行/列),如果提前知道颜色的深浅程

我正在处理红色、绿色、蓝色或黑色的小图像(四色卡片组中的思考卡排列)。确定图像颜色的快速算法是什么

有关输入的示例集,请参见,但图像可以缩放,这样它们就不会那么清晰

这些就是您正在使用的图像吗?如果是,是否所有图像上都有一个单独的彩色像素?我在想衣服在哪里。看看衣服应该放在哪里的像素,这会告诉你卡片的“颜色”

更通用的方法可能包括分析整个图像(缓慢但有效)、缩小图像比例并分析每个像素(如果最终图像较小但缩放可能会影响颜色,则更可行),或随机采样n个像素(或像素的行/列),如果提前知道颜色的深浅程度,可能需要一些遮罩,但是你需要一个通用的方法吗


哦-另一个想法:你控制输入图像的来源吗?也许你可以用一个数字来替代一些图像元数据来表示“颜色”。这是一种欺骗,因为不涉及真正的图像处理,而且容易受到标签被剥离/修改的影响,但这可能是最快的方法。

这对于一个像素来说效果足够好:

def get_ishness(r,g,b):
    h,s,v = rgb_to_hsv(r,g,b) #h from 0-360, s and v from 0-100
    if v < 50: return 'black'
    if s < 15: return None
    if h < 10: return 'red'
    if 80 < h < 100: return 'green'
    if 210 < h < 230: return 'blue'
    return None
def-get-ishness(r,g,b):
h、 s,v=从0-360的rgb_到hsv(r,g,b)#h,从0-100的s和v
如果v<50:返回“黑色”
如果s<15:返回无
如果h<10:返回“红色”
如果80

对于整个图像,我将红色、绿色、蓝色和黑色的像素相加,并返回像素最多的颜色。

这篇文章似乎已经解决了,但如果你不介意我的2美分

我认为,你需要一个通用的方法,你不知道这些图像是什么。虽然已经发布的答案应该足够好,可以通过一些调整进行快速编码,但如果您仍然遇到问题,我建议您使用自组织地图:以及


它可能需要一些(无监督的)训练时间来获得一个像样的地图/识别器(嘿,毕竟这是一个神经网络),但我遇到了一个有点像你的问题,它们对我来说很好(易于适应,灵活适应不同的光照等)。

我确实需要一个通用的方法-我不会特别使用那些图像,我不会事先知道它们是什么。给定一个像素,那么,考虑到红色像素可能是(255,0,0)或(255,31,12)或(253127114)等,我如何判断该像素是红色、绿色、蓝色还是黑色?@Claudiu:啊,那么你也有“红色”像素?我想,你必须定义一个“红色”的范围。想想看,如果有人输入橙色或粉色,你会怎么做?”克劳迪奥:你可能想看看颜色直方图:我会把粉红看作淡红色,而不是橙色。我想我只需要分析一下我使用的图像,看看哪些图像会被视为“红色”,谢谢直方图链接。似乎我应该转换到HSV颜色空间,并在那里寻找范围