不过还有些朋友不明就里,还在不停地@微信官方,希望能自动给头像加上一面国旗。然而等了半天,还是毫无反应……
其实不用那么麻烦啦,咱们都是有 Python 的人,图片拼接这种事,分分钟就可以了。
话不多说,直接上代码:
# -*- coding: utf8 -*-
import cv2
# 读取头像和国旗图案
img_head = cv2.imread('head.jpg')
img_flag = cv2.imread('flag.png')
# 获取头像和国旗图案宽度
w_head, h_head = img_head.shape[:2]
w_flag, h_flag = img_flag.shape[:2]
# 计算图案缩放比例
scale = w_head / w_flag / 4
# 缩放图案
img_flag = cv2.resize(img_flag, (0, 0), fx=scale, fy=scale)
# 获取缩放后新宽度
w_flag, h_flag = img_flag.shape[:2]
# 按3个通道合并图片
for c in range(0, 3):
img_head[w_head - w_flag:, h_head - h_flag:, c] = img_flag[:, :, c]
# 保存最终结果
cv2.imwrite('new_head.jpg', img_head)
这么多,就OK了。你只需要把这个代码copy到本地的一个py文件中并保存,然后在目录下放上一张头像图片和国旗图片,并把代码中的head.jpg和flag.png分别改成其文件名,然后用python执行此py文件即可。
效果展示:
(小知识:被遮盖部分的二维码依然不影响扫码)
求人不如求己,掌握python就是节约生命!
实现基本思路:
1. 读取进头像和国旗的图片
2. 根据头像和国旗的长宽,我们计算下图案需要缩放多少比例
3. 通过像素替换,将缩放后的国旗图案添加到头像图片的右下角
我们用了 python-opencv 库来处理图像,使用前需要安装。