import cv2
import numpy as np
1. 方形Logo:采用两张图像的所有分量加权和, 部分更新右上角中
# 方形logo:采用两张图像的所有分量加权和, 部分更新右上角中,
# 下面把Baboon作为logo加到Monarch的右上角
img_baboon = cv2.imread('baboon.bmp')
img_marked = cv2.imread('monarch.png')
# 把baboon缩放到101x101
img_baboon_resized = cv2.resize(img_baboon, (101, 101))
# w为img_baboon的权重
w = 0.6
img_marked[10:111, -111:-10, :] = w*img_baboon_resized + (1-w)*img_marked[10:111, -111:-10, :]
img_marked = img_marked.astype(np.uint8)
# 如果w较大,则logo可见,w较小,logo则不易见
# 显示img_marked
cv2.imshow('img marked', img_marked)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果
2. 圆形logo:采用两张图像的所有分量加权和, 部分更新右上角中
# 圆形logo:采用两张图像的所有分量加权和, 部分更新右上角中,
# 下面把Baboon作为logo加到Monarch的右上角
img_baboon = cv2.imread('baboon.bmp')
# 把baboon缩放到100x100
img_baboon_resized = cv2.resize(img_baboon, (101, 101))
img_marked = cv2.imread('monarch.png')
# Generate a circle type mask
logo_region_mask = np.zeros((101, 101, 3), dtype = np.uint8)
# 在logo_region_mask中,以(50,50)为圆心,以50为半径画一个实心圆
cv2.circle(logo_region_mask, (50,50), 50, (1,1,1), -1)
# w为img_baboon的权重
w = 0.6
region_tmp = w*img_baboon_resized + (1-w)*img_marked[10:111, -111:-10, :]
region_tmp = region_tmp.astype(np.uint8)
# 先生成一个小区域logo_region
logo_region = img_marked[10:111, -111:-10, :]
logo_region[logo_region_mask>0] = region_tmp[logo_region_mask>0]
# 把小区域logo_region的值更新回img_marked
img_marked[10:111, -111:-10, :] = logo_region
img_marked = img_marked.astype(np.uint8)
# 如果w较大,则logo可见,w较小,logo则不易见
# 显示img_marked
cv2.imshow('img marked', img_marked)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果