在OpenCV中提取与掩膜匹配的图像部分

5
在一个使用PythonOpenCV应用程序中,我有一个掩码和一个RGB图像,我想提取与掩码匹配的图像部分,但我不知道如何做。
例如,这是一个掩码: enter image description here 我想要做到这样: enter image description here 我这样做:
temp = cv2.bitwise_and(img ,img, mask=feature_map)

但是它给了我一个错误:

cv2.error: /Users/mee/opencv/modules/core/src/arithm.cpp:1589: error: (-215) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function binary_op

1
我现在没有设置来尝试它,但感觉(mtype == CV_8U || mtype == CV_8S)这部分是在说你的掩模需要是一个CV_8UC3矩阵。 - seleciii44
1
使用copyTo将反转的掩码应用到一个黑色初始化的图像上。 - Miki
2
@seleciii44 我会期望掩码是单通道的,但我认为你对类型的观察是正确的。在应用于图像之前,我也会期望反转掩码。 - beaker
2个回答

3
您可以这样做:
mask = cv2.imread('mask.png',0)
im = cv2.imread('guy.png')
mask_inv =  255 - mask;
final_im = mask_inv*im

1
你需要将口罩转换为对象遮罩像素值为255,背景像素值为0。之后,你可以对RGB图像的每个颜色通道使用新的遮罩进行“and”或“multiply”操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接