2016-04-18 31 views
2

我使用Python中的OpenCV中的calcHist()函數生成HSV圖像的色調直方圖但是我希望函數能夠忽略具有〜0%或〜100%亮度(分別爲黑色和白色)或〜0%飽和度(灰色)。有任何想法嗎?提前致謝。OpenCV--在生成色調直方圖時忽略像素

回答

2

calcHist函數接受mask參數。您可以使用您提到的這些屬性創建一個遮罩,並將其傳遞給該函數。我建議你創建,一旦分析像素的東西......但一個簡單的方法做到這一點是:

h,s,v = cv2.split(img) 
mask = (v == 0) + (v == 100) + (s == 0) 
mask = numpy.logical_not(mask) 

然後你可以使用你的掩碼矩陣的功能。它會忽略具有錯誤值的像素。我已經在C++中使用了這個,所以我不確定假值是否可以工作,或者如果你需要整數作爲C++版本...在最壞的情況下,只需添加另外一行mask *= 1,你就完成了。

希望這會有所幫助。

+0

我在Python中使用OpenCV,所以我不熟悉C++語法。在你的第二行代碼中,「+」代表邏輯或? – user3396592

+1

@ user3396592這實際上是Python代碼...它工作邏輯或 – api55