0

私は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

このエラーの修正を手伝ってください。

4

1 に答える 1

1

temp はuint8マスク配列ではないため、これを変換できると思います。

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

または、それを作成するとき:

temp = (labels_map == label[labelx]).astype(np.uint8)
于 2013-03-18T12:26:01.677 に答える