使用opencv给图片添加水印

先来看下效果:
【原图】
在这里插入图片描述
【我的水印】
在这里插入图片描述
【最终效果】
在这里插入图片描述
有模有样了是不是?

这里简单解释一下原理或者说是我的思路
制作这个水印时,我第一反应是使用opencv里面图像重叠混合的操作,通过调整不同的权值可以使图片起到一个透明的效果,从而看起来像是一个水印。这个图像混合的操作,使用的是cv2.addWeight()函数,但使用这个函数有个弊端:加权融合的图片大小尺寸必须相同。一般情况下,水印是比我们的图片小的,所以我们不可能去缩小我们的图片,这会使我们的图片质量降低。但也并非没有办法,那就是从我们的图片中裁剪出一个与水印同样大小的ROI区域在这个区域内进行图片的加权融合运算,这样就实现了以上的效果。

代码如下:

'''2020.12.03
使用opencv实现两张不同大小的图片的融合,可制作文字和图片水印,只不过这个水印要自己事先准备
'''
import cv2

ori_img = cv2.imread('origin.jpg')  #原图
watermark = cv2.imread('watermark.jpg')  # 水印

# 根据小图像的大小,在大图像上创建感兴趣区域roi(放置位置任意取)
rows, cols = watermark.shape[:2] #获取水印的高度、宽度
roi = ori_img[0+150:rows+150, 0+150:cols+150]  # 加上150是调整加在图片中的某个位置

dst = cv2.addWeighted(watermark,0.15,roi,0.85,0) #图像融合
add_img = ori_img.copy() #对原图像进行拷贝
add_img[0+150:rows+150, 0+150:cols+150] = dst  # 将融合后的区域放进原图

cv2.imshow('result',add_img)
cv2.imwrite('result.jpg',add_img)  # 保存图片
if cv2.waitKey(0)&0xFF==27:  # 按ESC键退出
    cv2.destroyAllWindows()
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值