cvInRangeS(imgHSV, cvScalar(15, 234, 120), cvScalar(21, 234, 120), imgThreshed);
我想知道cvScalar函数中的每个参数代表什么。我认为这将是HSV,但似乎并没有对所需的颜色进行阈值处理。有人能解释一下参数有点清楚吗?
答案 0 :(得分:10)
cvInrangeS
函数检查数组元素位于两个标量之间。
第一个cvScalar值表示包含下限。 第二个cvScalar值表示独占上限。
cvInrangeS不关心你给出的值,如RGB或BGR或HSV等。它只是通过你给出的数组元素作为输入(第一个参数)(这里是一个图像)并检查元素是否在给定的指定范围。如果是,则选择它,否则拒绝。并将结果输入到最后一个参数,输出图像。
现在,如果您提供HSV图像。所以cvScalar表示你想要提取的范围的最低和最高颜色。
如果是RGB图像,则指定最小和最大RGB颜色。
最好使用HSV,因为它提供了良好的结果。 Read here
现在,如果您想将RGB转换为HSV值,请尝试here和here.
(请记住,在OpenCV中红色和蓝色互换。它是BGR,而不是RGB)。
答案 1 :(得分:4)
这意味着
H - 色调,S - 饱和度,V - 值
在这里了解每一个:
http://en.wikipedia.org/wiki/HSL_and_HSV
颜色主要在Hue组件中定义。这里有一个关于HSV空间阈值的好教程: