14.Opencv大作业2——为图像添加水印

设计步骤: 

#1.引入一张图片

#2.要有一个LOGO

#3.计算图片在什么地方添加,在添加的地方地方变成黑色

#4.利用add,将logo与图片叠加在一起

示例教程:

#1.引入一张图片
#2.要有一个LOGO
#3.计算图片在什么地方添加,把需要添加的地方变成黑色,变成黑色的方法,先取反,再进行与
#4.利用add,将logo与图片叠加在一起

import cv2
import numpy as np

#导入需要添加LOGO的图片
img = cv2.imread('C:\\Users\\Mengyang\\Desktop\\112.png')

#创建LOGO
logo = np.zeros((200,200,3),np.uint8)
mask =  np.zeros((200,200),np.uint8)  #掩码,2通道

#绘制LOGO
logo[20:120,20:120] = [0,0,255]
logo[80:180,80:180] = [0,255,0]

mask[20:120,20:120] = 255
mask[80:180,80:180] = 255

#对mask按位求反
m = cv2.bitwise_not(mask)

#选择图片添加logo位置
roi = img[0:200,0:200]  #选择要显示的区域

#与m进行与操作
tmp = cv2.bitwise_and(roi, roi, mask = m)   #3通道图像的与操作,把需要的区域扣出来

#在抠出来的区域加logo
dst = cv2.add(tmp,logo)  #原图加水印的区域roi
img[0:200,0:200] = dst   #进行区域赋值,在原图上加水印

# cv2.imshow('tmp',tmp)
# cv2.imshow('mask',mask)
#cv2.imshow('logo',logo)
# cv2.imshow('m',m)
cv2.imshow('dst',dst)
cv2.imshow('img',img)


cv2.waitKey(0)

运行结果:

 进一步修改:添加想要的LOGO

import cv2
import numpy as np

#导入需要添加LOGO的图片
img = cv2.imread('C:\\Users\\Mengyang\\Desktop\\112.png')
#导入logo
logo= cv2.imread('C:\\Users\\Mengyang\\Desktop\\111.png')

mask =  np.zeros((100,100),np.uint8)  #掩码,2通道
mask[0:100,0:100] = 255  

#对mask按位求反,得到黑色区域
m = cv2.bitwise_not(mask)

#选择图片添加logo位置
roi = img[50:150,100:200]  #选择要显示的区域

tmp = cv2.bitwise_and(roi,roi,mask=m)  #抠图

#在抠出来的区域加logo
dst = cv2.add(tmp,logo)  #原图加水印的区域roi
img[50:150,100:200] = dst   #进行区域赋值,在原图上加水印

cv2.imshow('tmp',tmp)
cv2.imshow('mask',mask)
cv2.imshow('logo',logo)
cv2.imshow('m',m)
cv2.imshow('dst',dst)
cv2.imshow('img',img)

cv2.waitKey(0)

运行结果:

猜你喜欢

转载自blog.csdn.net/qq_45355603/article/details/124445466