Traceback (most recent call last): File "D:\PycharmProjects\老照片修复复杂\main.py", line 81, in <module> main() File "D:\PycharmProjects\老照片修复复杂\main.py", line 71, in main missing = extract_missing(img, edges) File "D:\PycharmProjects\老照片修复复杂\main.py", line 41, in extract_missing missing = cv2.bitwise_and(img, img, mask=cv2.drawContours(np.zeros_like(img), [hull], 0, (255, 255, 255), -1)) cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:230: error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'cv::binary_op'
时间: 2023-06-17 13:03:21 浏览: 83
linux 下 pip3 报错“ File “/usr/bin/pip3”, line 9, in from pip import mainImportError: canno”处理
5星 · 资源好评率100%
这个错误提示是OpenCV抛出的。根据错误提示,它似乎是由于掩码(mask)的数据类型不正确引起的。在你的代码中,你正在使用np.zeros_like()函数创建一个全零数组作为掩码,并且尝试将其与图像进行按位与运算。但是,由于你没有指定数据类型,np.zeros_like()函数默认使用与输入数组相同的数据类型,这可能会导致错误。你可以尝试将掩码的数据类型设置为np.uint8,例如:
```
missing = cv2.bitwise_and(img, img, mask=cv2.drawContours(np.zeros_like(img, dtype=np.uint8), [hull], 0, (255, 255, 255), -1))
```
这样,你可以将掩码的数据类型设置为8位无符号整数类型,避免了上述错误。
阅读全文