我正在一個項目中,我想從給定的圖像中獲得自定義直方圖。Python Opencv顏色範圍直方圖
比方說,我想算的三種顏色的像素數:
- 淺棕色。
- 藍色。
- 紅色。
我發現很容易計算匹配混合顏色的像素,但我想給顏色一個閾值,這是我的問題。
我怎樣才能做一個好門檻,將反映幾乎淺棕色或紅色的差不多,等...
感謝。
我正在一個項目中,我想從給定的圖像中獲得自定義直方圖。Python Opencv顏色範圍直方圖
比方說,我想算的三種顏色的像素數:
我發現很容易計算匹配混合顏色的像素,但我想給顏色一個閾值,這是我的問題。
我怎樣才能做一個好門檻,將反映幾乎淺棕色或紅色的差不多,等...
感謝。
我發現了一個非常好的方法來解決我的問題:
示例代碼:
red_bgr = (0,0,255) # red pixel
pixel = (2,2,245) # pixel to compare
red_lab = cv2.cvtColor(pixel1, cv2.COLOR_BGR2LAB)
pixel_lab = cv2.cvtColor(pixel1, cv2.COLOR_BGR2LAB)
deltaE = sqrt(abs(red_lab[0] - pixel_lab[0])**2 +
abs(red_lab[1] - pixel_lab[1])**2 +
abs(red_lab[2] - pixel_lab[2])**2)
)
像素具有最低的DeltaE是最感知相似於比較的顏色。
有了這個,很容易根據我想要計算的顏色建立直方圖。
這是所有關於你的分檔
從here
分檔:以上直方圖顯示的每個像素值的像素數,即從0到255,即需要256個值,顯示以上直方圖。但是請考慮,如果您不需要分別查找所有像素值的像素數量,但是像素值的間隔中的像素數量是多少?例如,您需要找到位於0到15之間,然後是16到31,...,240到255之間的像素數。您將只需要16個值來表示直方圖。這就是OpenCV教程中關於直方圖的例子。
的報價是指在所示的例子[1]
無論這些鏈接都值得通過,但有效的,你可以做的是設置了一些閱讀你想要的範圍的箱子,說淺褐色是1-15(我不知道實際值),那麼你可以爲你想要的顏色閾值。
感謝您的回答GPPK,我發現你的鏈接相當有用,但是我的問題在於一個顏色的範圍,在灰度圖中很容易說從10到20強化色1從20到30色2等等,但是RGB顏色呢?我真的不知道如何爲給定的顏色應用閾值。 –