gpt4 book ai didi

python - 使用 OpenCV (cv.add) 为蒙版下的图像添加颜色

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

我正在尝试使用 OpenCV 3 为给定 mask 内的图像添加颜色。

这是一个简化的、可重现的图像版本,只有一行和两个像素:

import numpy as np
import cv2 as cv

img = np.array([[[0, 0, 0], [0,0,0]]], "uint8")
color = np.array([ 30, 50, 50], "uint8")
mask = np.array([[255, 0]], "uint8")
cv.add(img, color, img, mask=mask)

产生以下错误:

(-215:Assertion failed) type2 == 6 && (sz2.height == 1 || sz2.height == 4) in function 'cv::arithm_op'

我假设错误的原因是颜色既不是与原始图像大小相同的图像,也不是标量。

事实上,如果我使用:

import numpy as np
import cv2 as cv
img = np.array([[[0, 0, 0], [0,0,0]]], "uint8")
color = np.array([ 30, 50, 50], "uint8")
color_img = np.full_like(img, color) # create full image with a single color
mask = np.array([[255, 0]], "uint8")
cv.add(img, color_img, img, mask=mask)

但是创建具有相同像素的 color_img 只是为了求和到 img 似乎很浪费。有没有办法将颜色直接加到 img 的每个像素上?

最佳答案

您可以使用 Numpy 来完成:

import numpy as np 
import cv2 as cv

img = np.array([[[0, 0, 0], [0,0,0]]], dtype=np.uint8)
color = np.array([ 30, 50, 50], dtype=np.uint8)
mask = np.array([[255, 0]], dtype=np.uint8)

# Set pixels in "img" to "color" wherever "mask" > 0
img[mask>0] = color

结果

array([[[30, 50, 50],
[ 0, 0, 0]]], dtype=uint8)

关于python - 使用 OpenCV (cv.add) 为蒙版下的图像添加颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57796942/

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