[CV2添加2张图像,没有透明度Python

问题描述 投票:0回答:1

我正在从事图像处理项目。我有2个RGB图像,我想通过重叠2个输入图像来创建一个新图像。

这是我的2个输入图像:

[Crack enter image description here

我正在使用cv2的“添加”方法来实现这一目标。但是结果不是希望的结果...

结果如下:

enter image description here

我不想在红色条纹上设置透明性。我想要一些不透明的东西,它可以遮盖图像1上的裂缝。

有我的代码:

img1 = cv2.imread(r"C:\Users\francois.bock\Desktop\crack.jpg")
img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)

img2 = cv2.imread(r"C:\Users\francois.bock\Desktop\line.png")
img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)

# Adding two images
add = cv2.add(img1, img2)

#Display the image
img = PImage.fromarray(add)
img.show()

我也很天真的尝试添加2张图片,例如:

add = img1 + img2
add = add.astype(np.uint8)

但是结果甚至更陌生。

我也使用了cv2“ addWeighted”方法,但是它也提供了透明的条纹。

所以我的问题是,有没有添加不透明的2张图像的简单方法?预先谢谢你。

python image-processing cv2
1个回答
0
投票

您可以使用直截了当的Numpy:

import numpy as np
import cv2

a = cv2.imread('a.jpg')
b = cv2.imread('b.png') 

# Make "a" red anywhere b>0
a[ np.any(b>0,axis=-1) ] = [0,0,255] 

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.