有没有一种方法可以将颜色表示为单个值?

时间:2019-09-23 18:04:45

标签: opencv colors

因此,我得到了这堆图像(大约1000张),并且我使用了CV2和Python查找每个图像中的主要颜色。由于它是OpenCV,因此我可以使用多种格式(RGB,HSV等)获得该颜色。

我要找出的(不是计算机视觉或数学天才)是,是否有一种方法可以将主要颜色存储为某种单一值-用于搜索和排序。

我知道有一个公式可以使用HSV来计算一种颜色与另一种颜色之间的“距离”,但这实际上是一个愚蠢的小程序,需要大量的数学运算。

是否存在任何单一价值?还是“只是那样行不通”?

谢谢。

1 个答案:

答案 0 :(得分:1)

使用OpenCV和其他图像软件描述颜色的方式与人类解释颜色的方式不同。大多数人会认为红色和橙色彼此接近,而红色和蓝色彼此远离。图像软件程序使用强度,渐变和波长来描述颜色。

当人们考虑颜色时,大多数人都在考虑饱和度和值为255的颜色。要查找颜色之间的距离,可以查看其HSV值之间的差异。

hues

这是我用来生成该gif的代码:

import cv2
import numpy as np
h = 0
while True:
    img = np.zeros((200,200,3), np.uint8)
    img[:,:,:] = h, 255, 255
    img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
    cv2.imshow('img', img)
    k = cv2.waitKey(1)
    if k == 27: break
    h += 1
    if h == 180: h = 0