2012-07-16 104 views
0
cvCvtColor(frame, hsv_frame, CV_BGR2HSV); 
cvInRangeS(hsv_frame, hsv_min, hsv_max, thresholded); 

我试图按照蓝色的球。为了确定最大和最小我打开一张我用相机拍摄的照片,打开MS画图并在(180/240)处将结果加倍在H 和(255/240)S和L的结果中 然后我recive下一个值:计算cvInRangeS中的最小值和最大值

108 113 115 112 105 H 
145 40 107 129 143 S 
97 129 96 102 124 L 

所以我选择了下一个值:

CvScalar hsv_min = cvScalar(105, 40, 96); 
CvScalar hsv_max = cvScalar(115, 140, 130); 

但是当我尝试遵循它几乎再也看不到他 我错了如何计算?或者我能做些什么来改善结果?

回答

2

首先为什么你要将图像转换为HSV然后再谈谈HSL?如果我没有弄错,他们是不同的色彩空间。

要使用HSV色彩空间使用此范围内确定的蓝色:

Min (H/S/V): 90, 50, 50 
Max (H/S/V): 130, 255, 255 

而且this online converter应该帮助你。

而且不要忘了使用CV_BGR2HSV代码转换图像HSV后Hue值在范围[0..180],同时使用CV_BGR2HSV_FULL会给你范围[0..360]

+3

CV_BGR2HSV_FULL为您提供范围[0..255]而非[0..360] – 2013-07-15 20:42:56