资讯专栏INFORMATION COLUMN

python 图像处理:一福变五福

JinB / 1587人阅读

摘要:某宝一年一度的集五福活动更是成为每年的必备活动。今年再来对福字做文章,演示下如何用的图像处理功能,把一幅福字图片转出种不同的效果最图像处理最常用的两个模块是和,这里我们选择。轮廓福使用了自带的图像轮廓提取功能。

快过年了,各种互联网产品都出来撒红包。某宝一年一度的集五福(shua hou)活动更是成为每年的必备活动。虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹。毕竟对于如今生活在大城市的人来说,集福领红包和空荡的地铁车厢或许已是最大的“年味”了。

既然是凑热闹,怎么能少得了我。前年过年发过一篇:《一行代码扫出“敬业福”》,介绍的是 OCR 文字识别 的使用。今年再来对“福”字做文章,演示下如何 用 python 的图像处理功能,把一幅“福”字图片转出 5 种不同的效果

python 最图像处理最常用的两个模块是 PILOpenCV ,这里我们选择 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()

因为 OpenCVmatplotlib颜色模式 不一样,所以需要做一次转换,如果是直接通过 cv2 展示和保存图片则不需要。

上面的效果分别用到了以下功能:

1、灰度福

这里没有选择直接将图片转出灰度图,因为这样会导致福字不明显。而是通过将 红、绿、蓝三通道分离 后,选择色差最大的红色通道。


r,g,b = cv2.split(img)

2、轮廓福

使用了 OpenCV 自带的 图像轮廓提取 功能。为了更好的效果,这里 对红色通道进行二值化 后,再查找轮廓。


_, img_bin = cv2.threshold(r, 50, 255, cv2.THRESH_BINARY)
_, contours, _ = cv2.findContours(img_bin, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
img_cont = np.zeros(img_bin.shape, np.uint8)    
cv2.drawContours(img_cont, contours, -1, 255, 3)

3、反色福

发色的实现是将每个像素值 x 转成 255-x。如果遍历像素计算会比较慢,于是用了一个小技巧: 转成 numpy 的 ndarray 再进行矩阵运算


img_i = np.asarray(img)
img_i = 255 - img_i

4、膨胀福

这里其实是“ 图像腐蚀 ”操作(与“ 图像膨胀 ”操作相反)。因为在我们选取的红色通道中,白色是背景,黑色才是福字,所以对白色的“腐蚀”也就是对黑色的“膨胀”。这也是 OpenCV 的内置功能。做完这一步,又对图像进行了切割,直接通过列表的切片操作实现。


kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(25, 25))
eroded = cv2.erode(r, kernel)
size = img.shape
eroded = eroded[int(size[1]*0.15):int(size[1]*0.7),int(size[0]*0.2):int(size[0]*0.85)]

5、福到了

OpenCV 提供了 翻转 操作,第二个参数是 旋转轴 的选取,你可以试试 0 和 1 的效果。


img_r = cv2.flip(img, -1)

完整代码可以在公众号( Crossin的编程教室 )里回复关键字: 五福

以上就是我送给大家的 5 个福。试过了,都能被扫出来。我已集齐

如果你还没凑齐,可以扫这个图。祝大家新年有福气!

════

其他文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 人工智能 | 爬虫 | 我用Python | requests | 计算机视觉 | 字符播放器 | 一图学Python | 智能防挡弹幕

欢迎搜索及关注公众号: Crossin的编程教室

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43125.html

相关文章

  • 猫叔产品读记 | 全时关店潮、那些记得住的2019春节营销案例(2期)

    摘要:全时关店潮氪获得的一份内部资料显示,自去年月以来,全时便利店在北京关店约家截至月日,全时在北京的店铺还有家左右。这意味着该轮关店比例超过。 本博客 猫叔的博客,转载请申明出处 前言 本系列为猫叔综合整理的Java面试题系列,如有雷同不胜荣幸。 前言 本系列主要是猫叔对互联网相关产品(兼任产品经理)路上的视野扩展与信息记录,每日三篇,记录分享。 全时关店潮 36氪获得的一份内部资料显示,...

    spademan 评论0 收藏0
  • 揭秘支付宝中的深度学习引擎:xNN

    摘要:本文介绍支付宝中的深度学习引擎。因而无论在运行速度和内存占用等性能指标还是在兼容性上,支付宝的移动端都必须做到极致,才能较大幅度地降低使用门槛。五大目标支付宝是针对国民环境定制开发的移动端解决方案,项目制定了如下技术目标。 本文介绍支付宝App中的深度学习引擎——xNN。xNN通过模型和计算框架两个方面的优化,解决了深度学习在移动端落地的一系列问题。xNN的模型压缩工具 (xqueeze) ...

    wayneli 评论0 收藏0
  • 支付宝防并发方案之"一锁二判三更新"

    摘要:每年支付宝在双和双的活动中,都展示了绝佳的技术能力。对于异步并发重复消息的处理亦是如此,加深对状态机的判断后还可以处理消息乱序问题。 每年支付宝在双11和双12的活动中,都展示了绝佳的技术能力。这个能力不但体现在处理高TPS量的访问,更体现在几乎不会出错,不会出现重复支付的情况,那这个是怎么做到的呢? 诚然,为了实现在高并发下仍不会出错的技术目标,支付宝下了很多功夫,比如幂等性的处理,...

    imingyu 评论0 收藏0
  • 支付宝防并发方案之"一锁二判三更新"

    摘要:每年支付宝在双和双的活动中,都展示了绝佳的技术能力。对于异步并发重复消息的处理亦是如此,加深对状态机的判断后还可以处理消息乱序问题。 每年支付宝在双11和双12的活动中,都展示了绝佳的技术能力。这个能力不但体现在处理高TPS量的访问,更体现在几乎不会出错,不会出现重复支付的情况,那这个是怎么做到的呢? 诚然,为了实现在高并发下仍不会出错的技术目标,支付宝下了很多功夫,比如幂等性的处理,...

    yibinnn 评论0 收藏0

发表评论

0条评论

JinB

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<