gpt4 book ai didi

python - OpenCV(4.0.0)Python错误: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.函数 'cv::binary_op'中的sameSize(*psrc1)

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:31 26 4
gpt4 key购买 nike

我正在尝试使用 opencv 按位非在图像上应用蒙版。如果我在灰度模式下读取原始图像和蒙版图像,我就能够实现此结果,但它不适用于 3 channel 图像。

我已阅读此帖子 OpenCV Python Error: error: (-215) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function cv::binary_op但我的问题不是数组的形状或掩码不是 uint8 格式。

import cv2
import numpy as np

img = cv2.imread("Original.png") # original image, shape 544,480,3, dtype uint8
label = cv2.imread("Mask.png") # black and white mask,shape 544,480,3, dtype uint 8
shape = img.shape # 544,480,3
black_background = np.zeros(shape=shape, dtype=np.uint8)
result = cv2.bitwise_not(img,black_background,mask=label) # this is where error occurs
cv2.imwrite("masked.png",result)

我希望输出是用标签掩盖的原始图像,我得到错误核心

OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\core\src\arithm.cpp:245: error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'cv::binary_op'

最佳答案

正如错误提示,问题实际上是掩模形状。来自 docs :

mask – optional operation mask, 8-bit single channel array, that specifies elements of the output array to be changed.

您的标签是3 channel 图像,不兼容;这就是灰度起作用的原因,但由于您的 Mask.png 实际上是黑白图像,您应该不用担心:

label = cv2.imread("Mask.png", cv2.IMREAD_GREYSCALE)

关于python - OpenCV(4.0.0)Python错误: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.函数 'cv::binary_op'中的sameSize(*psrc1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56361919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com