【P44 6-7】OpenCV Python——图片添加logo,创建logo,mask,mask取反,ROI和掩膜与运算的tmp

P44 6-7

文章目录

  • [1 方法 与代码实现](#1 方法 与代码实现)
  • [2 测试效果](#2 测试效果)

1 方法 与代码实现

    1. 引入一幅图片,dog
    1. 要有一个LOGO,需要自己创建
    1. 计算图片在什么地方添加,在添加的地方变成黑色
    1. 利用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跟着变了(其他部分依旧)