文章目录
- [1 方法 与代码实现](#1 方法 与代码实现)
- [2 测试效果](#2 测试效果)
1 方法 与代码实现
-
- 引入一幅图片,dog
-
- 要有一个LOGO,需要自己创建
-
- 计算图片在什么地方添加,在添加的地方变成黑色
-
- 利用add,将logo 与 图处叠加到一起
python
#1. 引入一幅图片,dog
#2. 要有一个LOGO,需要自己创建
#3. 计算图片在什么地方添加,在添加的地方变成黑色
#4. 利用add,将logo 与 图处叠加到一起
import cv2
import numpy as np
#导入图片
dog = cv2.imread("dog.jpeg")
#创建LOGO和mask
logo = np.zeros((200, 200, 3), np.uint8)
mask = np.zeros((200, 200), np.uint8)
#绘制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边缘部分变白,logo部分变黑
m=cv2.bitwise_not(mask)
#选择logo添加位置,区域大小一定要与logo大小一样
roi=dog[0:200,0:200]
#与m进行与,因为roi是三通道
tmp=cv2.bitwise_and(roi,roi,mask=m)
dst=cv2.add(tmp,logo)
dog[0:200,0:200]=dst#浅拷贝,故roi跟着变了
cv2.imshow('roi', roi)
cv2.imshow('m', m)
cv2.imshow('mask', mask)
cv2.imshow('logo', logo)
cv2.imshow('dst', dst)
cv2.imshow('tmp', tmp)
cv2.imshow('dog', dog)
cv2.waitKey(0)
2 测试效果
原图
下面依次是:
创建logo,mask,mask取反,
选择logo添加位置大小ROI,ROI和掩膜与运算的tmp,tmp和logio叠加

logo复制到原图指定区域
#浅拷贝,故roi跟着变了(其他部分依旧)