由于“断言失败”而导致屏蔽失败... sameSize

时间:2019-12-23 08:22:48

标签: python opencv

我正在尝试创建仅是顶部白色多边形填充的图像,例如米色图像,因此当我运行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'

图片显示 maskregion

编辑

如果这种方法注定会失败,那么我尝试跳过使用采样函数中的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'

1 个答案:

答案 0 :(得分:0)

我通过稍微改变问题来解决了这个问题。 确保将掩码转换为正确的类型,然后直接使用mask参数调用= minMax

    gray = cv2.cvtColor(orig, cv2.COLOR_BGR2GRAY)
    minMaxLoc = cv2.minMaxLoc(gray, mask = mask)