写一个opencv的Python代码,将一个水印白底变透明,加到另一个图片上去
时间: 2024-09-14 21:12:55 浏览: 67
要在OpenCV中使用Python将水印(通常为白色背景)变为半透明,并将其添加到另一张图片上,你需要做以下几步操作:
首先,假设你已经有了两个图片,一个是包含水印的原始图片(watermark),另一个是你想加水印的主图片(main_image)。下面是一个示例代码:
```python
import cv2
import numpy as np
# 读取图片
main_image = cv2.imread('main_image.jpg')
watermark = cv2.imread('watermark.png')
# 检查图片是否加载成功
if main_image is None or watermark is None:
print("图片加载失败")
else:
# 获取水印的宽度和高度
watermark_width, watermark_height = watermark.shape[::-1]
# 将水印转换为灰度,以便更容易地透明化
gray_watermark = cv2.cvtColor(watermark, cv2.COLOR_BGR2GRAY)
# 使用阈值处理将白色变为黑色,其余变为白色(可以调整阈值)
_, watermark_mask = cv2.threshold(gray_watermark, 180, 255, cv2.THRESH_BINARY_INV)
# 扩展掩码以适应透明效果
kernel = np.ones((3, 3), np.uint8)
watermark_mask = cv2.dilate(watermark_mask, kernel, iterations=1)
# 将透明度应用到水印上,这里设置为70%透明度(0-255之间,0表示完全透明)
alpha = 70
watermark_color = (watermark * watermark_mask + alpha // 2).astype(np.uint8)
# 将透明的水印加到主图片上
output = cv2.addWeighted(main_image, 1, watermark_color, 0.8, 0)
# 显示结果
cv2.imshow("Output with Transparent Watermark", output)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文