2013-03-18 3 views
0

Я новичок в Python. Я нашел код для вычисления гистограммы изображения в Интернете. Я хочу вычислить гистограмму локальной области изображения, поэтому я попытался использовать маску. Вот мой код:Как дать гистограмму в python

i_rgb1 = cv2.imread(im1) 
    img1 = cv2.cvtColor(i_rgb1, cv.CV_BGR2HSV) 
    hist2 = np.zeros(img2.shape) 

bins = np.arange(256).reshape(256, 1) 
color = [(255, 0, 0), (0, 255, 0), (0, 0, 255)] 

for labelx in xrange(len(label)): 
    temp = labels_map.copy() 
    temp[labels_map != label[labelx]] = 0 
    temp[labels_map == label[labelx]] = 255 
    cv2.imwrite('mask.png', temp) 
    for ch, col in enumerate(color): 
     hist_item1 = cv2.calcHist([img1], [ch], temp, [256], [0, 255]) 

где labels_map представляет собой матрицу изображение, состоящее назначение метки для каждого пикселя. Но когда я запускаю этот код, я получаю сообщение об ошибке говорящего

OpenCV Error: Assertion failed (!mask.data || mask.type() == CV_8UC1) in unknown function 

Пожалуйста, помогите мне исправить эту ошибку.

ответ

1

Я думаю, что это потому, что температура не массив из uint8 маски, вы можете преобразовать его:

cv2.calcHist([img1], [ch], temp.astype(np.uint8), [256], [0, 255]) 

Или, когда вы создаете ее:

temp = (labels_map == label[labelx]).astype(np.uint8) 
+0

Да, он сейчас работает .. спасибо :) – Khushboo

Смежные вопросы