python - 由于“断言失败”而导致屏蔽失败......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'
解决方案
我通过稍微改变问题解决了这个问题。确保将掩码转换为正确的类型,然后直接使用掩码参数调用 = minMax
gray = cv2.cvtColor(orig, cv2.COLOR_BGR2GRAY)
minMaxLoc = cv2.minMaxLoc(gray, mask = mask)
推荐阅读
- javascript - 如何在卡片列表中添加无限滚动?[反应JS]
- python - LeetCode 问题 135 糖果一次性解法,求给每个孩子的糖果数量
- gcc - GCC:不要在共享对象中包含系统信息
- ios - 防止视图控制器堆叠 IOS 13 (swift)
- html - 博主的移动视图格式错误
- java - JPA如何延迟加载集合?
- java - 需要对 ServerSocket 进行说明
- javascript - Firefox - 我认为每个选项卡都有一个单独的 Service Worker 实例 - 为什么?
- r - Scroll bar on Mac RStudio blocks view of code
- flutter - 使用 initialValue 时 setState 不更新 TextFormField