Я пытаюсь создать изображение, которое представляет собой только верхний белый многоугольник, заполненный, например, изображением бежевого цвета, чтобы при запуске minMaxLoc я не получал замаскированную область в результате. Моя маска и область интереса одного и того же размера, 100 x 100
искусственно, чтобы отладить это. Похоже, ошибка заключается в том, что они не одинакового размера.
#the mask
mask = np.zeros((100, 100))
cv2.fillPoly(mask,[pts],True,255)
mask = mask[0:100, 0:100]
#the region
roi = image[0:100, 0:100]
cv2.bitwise_and(roi, roi, mask = mask)
cv2.imshow('image',roi)
cv2.waitKey(0)
error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'binary_op'
Изображения, показывающие mask , region
Редактировать
Если этот подход неизбежно потерпит неудачу, я попытался пропустить создание маски, из которой производится выборка и выборка напрямую, используя параметры маски в функции выборки:
(minVal, maxVal, minLoc, maxLoc) = cv2.minMaxLoc(gray, mask)
, который выдает пустую маску:
error: (-215:Assertion failed) (cn == 1 && (_mask.empty() || _mask.type() == CV_8U))
|| (cn > 1 && _mask.empty() && !minIdx && !maxIdx) in function 'minMaxIdx'