2012-07-16 106 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