Как рассчитать гистограмму на opencv без учета всех черных пикселей на изображении (из-за маски) - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь получить HSV, гистограмму LAB изображения, чтобы извлечь определенные функции, но на самом деле я не могу получить каких-либо точных результатов от моих функций, если гистограмма принимает во внимание черные пиксели областей, которые у меня есть в маске, как я могу решить эту проблему, пожалуйста, любая помощь приветствуется.

Я работаю с python.

Вот пример изображения, а вот код, который я пытаюсь для использования. введите описание изображения здесь

hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hue = hsv_image[:,:,0].astype(float)
sat = hsv_image[:,:,1].astype(float)
val = hsv_image[:,:,2].astype(float)
hue[hue == 0] = np.nan
histr_lab = cv2.calcHist([hsv_image], [0], None, [255], [0, 255])
histr_lab1 = cv2.calcHist([hsv], [1], None, [255], [0, 255])
histr_lab2 = cv2.calcHist([hsv], [2], None, [255], [0, 255])

1 Ответ

1 голос
/ 13 июля 2020

Попытайтесь отфильтровать черные пиксели (val = 0) перед построением гистограммы, применив:

hue = hue[numpy.where(val > 0,True,False)]
sat = sat[numpy.where(val > 0,True,False)]
val = val[numpy.where(val > 0,True,False)]

в вашем случае при вычислении гистограммы попробуйте:

cv2.calcHist(hsv_image[np.where(val > 0,True, False)], [1],None, [255], [0, 255])
...