繁体   English   中英

OpenCV 和 Python:在图像上覆盖彩色蒙版

[英]OpenCV & Python: Cover a colored mask over a image

我想用黑白蒙版形状的透明纯色覆盖覆盖图像

目前我正在使用以下java代码来实现这一点。

redImg = new Mat(image.size(), image.type(), new Scalar(255, 0, 0));
redImg.copyTo(image, mask);

我不熟悉python api。

所以我想知道python中是否有任何替代api。 有没有更好的实现方式?

图片:

源图片

面具:

面具

我想要的是:

我想要的是

现在,在我处理了所有这些 Python、OpenCV、Numpy 的事情一段时间后,我发现用代码实现它非常简单:

image[mask] = (0, 0, 255)

-------------- 原来的答案 --------------

我通过以下代码解决了这个问题:

redImg = np.zeros(image.shape, image.dtype)
redImg[:,:] = (0, 0, 255)
redMask = cv2.bitwise_and(redImg, redImg, mask=mask)
cv2.addWeighted(redMask, 1, image, 1, 0, image)

这个想法是将掩码转换为像素为0 (黑色)或255 (白色)的二进制格式。 白色像素代表保留的部分,而黑色部分被丢弃。 然后将蒙版上的所有白色像素设置为所需的BGR颜色。

输入图像和蒙版

结果

代码

import cv2

image = cv2.imread('1.jpg')
mask = cv2.imread('mask.jpg', 0)
mask = cv2.threshold(mask, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
image[mask==255] = (36,255,12)

cv2.imshow('image', image)
cv2.imshow('mask', mask)
cv2.waitKey()

这对我有用:

red = np.ones(mask.shape)
red = red*255
img[:,:,0][tmask>0] = red[mask>0]

所以我制作了一个具有 255 个实心值的二维数组,并将其替换为我的图像的红色带(以像素为单位),我的掩码不为零。 红面具

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM