有时我们需要给一张图片添加logo,例如下图这样(图片来源):
1.掩膜操作思路
它的思想是:
- 先将彩色图像转换为灰度图,然后利于阈值将图像二值化,变成非黑即白的形式,这样logo的蒙版就做好来了(学过PS的人应该很容易理解);
- 蒙版中黑色的区域表示删除掉该区域像素,白色表示保留该区域像素。黑色是0,白色是255;
- 所以利用二值化得到的蒙版(掩膜)是剔除logo区域的。反之,是用来提出logo上的多余区域的;
- 如何剔除掉小姐姐照片中的logo区和logo上的空白区域呢,用
cv2.bitwise_and
方法。因为0(黑色)与非0数and后为0,这样就可以把该区域剔除啦; - 最后,将logo补到小姐姐照片上就可以了。
2.掩膜操作完整代码
以下是实现这一操作的完整代码:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img1 = cv2.imread('person.jpg')
img2 = cv2.imread('logo.jpg')
rows, cols, channels = img2.shape # 获取图像2的属性
roi = img1