2016-04-18 4 views
2

Я использую функцию calcHist() из OpenCV в Python для генерации гистограмм Hue для изображений 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

Я использую OpenCV в Python, поэтому я не знаком с синтаксисом C++. В вашей второй строке кода «+» представляет логический или? – user3396592

+1

@ user3396592, который на самом деле является кодом python ... он работает как логический или – api55