2012-02-07 40 views
3

我將圖像轉換爲HSV後,我將閾值設置爲黃色,因此代碼爲 cvInRangeS(imgHSV,cvScalar(112,100,100),cvScalar(124,255,255),imgThreshed ); 但它不起作用總是給我黑色的形象。在opencv中檢測到黃色

回答

8

你應該試試這個教程"tracking yellow objects".

它給出了黃色物體一HSV範圍cvInRangeS(imgHSV, cvScalar(20, 100, 100), cvScalar(30, 255, 255), imgThreshed)

如果你有選擇的顏色有任何疑問,試試這個:http://www.yafla.com/yaflaColor/ColorRGBHSL.aspx

+0

確定合適的範圍,但是如果我們有像青色23這樣的條件和像40那樣的綠色黃色, 69比你提到的網站如何找到他們的HSV – AHF 2014-04-28 11:40:32

+0

你需要RGB或HSV或CMYK或任何標準色彩空間的顏色值。然後你可以將它們轉換爲其他色彩空間。只需谷歌的轉換公式(或任何網站,爲您做轉換)。通常,青色,品紅色和黃色一起計數。從來沒有聽說過青色,綠色和黃色。 – 2014-04-28 13:08:24

+0

你可以在這裏看到,我正在努力做到這一點,其中我必須處理所有這些或可能是我解釋錯誤,'http://stackoverflow.com/questions/23312898/trying-to-make-color -balanced of photoshop-using-opencv?noredirect = 1#comment35693629_23312898'這是我的情況 – AHF 2014-04-28 13:16:21

1

我認爲你的色調值可能不正確。如果您嘗試檢測黃色,我不確定您在哪裏獲得112-124色調範圍。我期望值接近40,所以也許嘗試一個範圍34-46。

+0

幀它是正確的感謝ü ,這樣你們可以寫範圍爲每種顏色(紅,綠,藍),請? ??? – 2012-02-07 15:55:41

+0

RGB空間的問題在於「顏色」對於我們認爲的不變顏色的解釋並不那麼簡單。我建議你運行一個像Paint這樣的工具,並選擇你認爲適合你的任務的低和高RGB範圍,如果你想在RGB圖像上運行而不是在HSV圖像上運行這些值。你可以從一個像((255,255,0))這樣的值開始,並且如果你正在尋找黃色的話,看看你在哪裏得到了你。還要注意OpenCV以BGR順序存儲事物,所以'(0,255,255)'可能代表你插入'inRange()'的範圍。 – aardvarkk 2012-02-07 16:00:29

+0

cvInRangeS(imgHSV,cvScalar(0,0,60),cvScalar(0,0,255),imgThreshed); 它不檢測紅色! 可能是範圍不正確 可以ü給我另一種顏色的例子,以知道如何爲其他顏色 – 2012-02-11 04:27:28

2

你也可以將RGB轉換成您有公式鏈接HUE

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

,那麼你知道,黃色具有大約60的HUE值。

+0

在OpenCV中,HUE值在0-180之間,所以** 30 **左右的值可以。 – Koray 2017-02-17 11:12:09

1

對於黃色,範圍應該是從23到40,例如按照我在我的黃色對象跟蹤程序中使用

//閾值黃色

cvInRangeS(hsvframe,cvScalar(23,41,133),cvScalar(40,150,255),threshy);