我正在尝试创建仅是顶部白色多边形填充的图像,例如米色图像,因此当我运行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参数直接从中创建一个要采样和采样的蒙版:
(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'
答案 0 :(得分:0)
我通过稍微改变问题来解决了这个问题。 确保将掩码转换为正确的类型,然后直接使用mask参数调用= minMax
gray = cv2.cvtColor(orig, cv2.COLOR_BGR2GRAY)
minMaxLoc = cv2.minMaxLoc(gray, mask = mask)