设计步骤:
#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)
运行结果: