快过年了,各种互联网产品都出来撒红包。某宝一年一度的集五福(shua hou)活动更是成为每年的必备活动。虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹。毕竟对于如今生活在大城市的人来说,集福领红包和空荡的地铁车厢或许已是最大的“年味”了。
既然是凑热闹,怎么能少得了我。前年过年发过一篇:《一行代码扫出“敬业福”》,介绍的是 OCR 文字识别 的使用。今年再来对“福”字做文章,演示下如何 用 python 的图像处理功能,把一幅“福”字图片转出 5 种不同的效果 :
python 最图像处理最常用的两个模块是 PIL 和 OpenCV ,这里我们选择 OpenCV。
读取图片及展示代码:
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('fu.png')
# 转换颜色模式,显示原图
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
plt.show()
因为 OpenCV 和 matplotlib 的 颜色模式 不一样,所以需要做一次转换,如果是直接通过 cv2 展示和保存图片则不需要。
上面的效果分别用到了以下功能:
1、灰度福
这里没有选择直接将图片转出灰度图,因为这样会导致福字不明显。而是通过将 红、绿、蓝三通道分离 后,选择色差最大的红色通道。
r,g,b = cv2.