HSV色彩空间和CvInRangeS功能

时间:2012-01-31 01:05:09

标签: opencv hsv

cvInRangeS(imgHSV, cvScalar(15, 234, 120), cvScalar(21, 234, 120), imgThreshed);

我想知道cvScalar函数中的每个参数代表什么。我认为这将是HSV,但似乎并没有对所需的颜色进行阈值处理。有人能解释一下参数有点清楚吗?

2 个答案:

答案 0 :(得分:10)

cvInrangeS函数检查数组元素位于两个标量之间。

第一个cvScalar值表示包含下限。 第二个cvScalar值表示独占上限。

cvInrangeS不关心你给出的值,如RGB或BGR或HSV等。它只是通过你给出的数组元素作为输入(第一个参数)(这里是一个图像)并检查元素是否在给定的指定范围。如果是,则选择它,否则拒绝。并将结果输入到最后一个参数,输出图像。

查看其documentation

现在,如果您提供HSV图像。所以cvScalar表示你想要提取的范围的最低和最高颜色。

如果是RGB图像,则指定最小和最大RGB颜色。

最好使用HSV,因为它提供了良好的结果。 Read here

现在,如果您想将RGB转换为HSV值,请尝试herehere.

(请记住,在OpenCV中红色和蓝色互换。它是BGR,而不是RGB)。

答案 1 :(得分:4)

这意味着

H - 色调,S - 饱和度,V - 值

在这里了解每一个:

http://en.wikipedia.org/wiki/HSL_and_HSV

颜色主要在Hue组件中定义。这里有一个关于HSV空间阈值的好教程:

http://aishack.in/tutorials/thresholding/