Мне нужно вычислить гистограмму только на одной части моего изображения, но эта часть имеет круглую форму (например, диск). Я создаю маску, чтобы найти эту часть на изображенииКак вычислить гистограмму OPENCV с помощью маски?
cv2.rectangle(mask,(0, 0), (width, height), (0,0,0), -1)
cv2.circle(mask,(int(avgkrug[0]),int(avgkrug[1])),radijusp2,(255,255,255),-1)
cv2.circle(mask,(int(avgkrug[0]),int(avgkrug[1])),radijusp1,(0,0,0),-1)
Используя код выше, я нашел свою «диск-форму» область интереса. Теперь я пытаюсь вычислить гистограмму:
for ch, col in enumerate(color):
hist_item = cv2.calcHist([img],[ch],mask,[256],[0,255])
...
но получил эту ошибку
error: (-215) !mask.data || mask.type() == CV_8UC1 in function cv::calcHist
Однако, если я сохранить маску на Dics и читать его с помощью cv2.imread(), то эта ошибка Безразлично» t. Я также попытался это использовать эту линию
hist_item = cv2.calcHist([slika],[ch],mask.astype(np.uint8),[256],[0,255])
Как я могу использовать маску, я создаю известково гистограмму, так что я не нужен ж/г с диска?
Проверьте тип маски, 'mask.dtype'. Это должно быть np.uint8. –
print (type (mask.dtype)) -><тип 'numpy.dtype'> print (np.result_type (mask.dtype)) -> uint8 ошибка все еще появляется – Error