首页 > 解决方案 > 由于“断言失败”而导致屏蔽失败......sameSize

问题描述

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

显示 蒙版区域的图像

编辑

如果这种方法注定会失败,那么我尝试跳过创建一个用于采样的掩码,并直接使用采样函数中的掩码参数进行采样:

(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'

标签: pythonopencv

解决方案


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

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

推荐阅读