快过年了,各种互联网产品都出来撒红包。某宝一年一度的“集五福活动”更是成为每年的必备活动之一。

虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹。

毕竟对于如今生活在大城市的人来说,集福领红包和空荡的地铁车厢或许已是最大的“年味”了。

既然是凑热闹,怎么能少得了我。

之前我(GitPython公众号)发过一篇:《10几行代码,用python打造实时截图识别OCR》,介绍的是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 展示和保存图片则不需要。

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

01

灰度福

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

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

02

轮廓福

使用了 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)

03

反色福

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

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

04

膨胀福

这里其实是“图像腐蚀”操作(与“图像膨胀”操作相反)。因为在我们选取的红色通道中,白色是背景,黑色才是福字,所以对白色的“腐蚀”也就是对黑色的“膨胀”。这也是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)]

05

福到了

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

img_r = cv2.flip(img, -1)

python图像处理:一福变五福相关推荐

  1. python春节集五福_python 图像处理:一福变五福

    快过年了,各种互联网产品都出来撒红包.某宝一年一度的集五福(shua hou)活动更是成为每年的必备活动.虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹.毕竟对于如今生 ...

  2. python简单代码 春节集五福-我用 Python 集齐了五福

    新的一年又要到来了,各个大的公司又在这年末为大家送上了新春的祝福,支付宝还是延续了这几年的传统,在年末为大家送上了集五福的活动,为了大家能更快更好的扫出来大大的"福",今天小编就带 ...

  3. python简单代码 春节集五福-集五福活动又来了,不过这个价值几十亿的大项目也别错过...

    原标题:集五福活动又来了,不过这个价值几十亿的大项目也别错过 已经持续5年的支付宝集五福活动,终于在广大网友千呼万唤下,"下周一见"上线了! * 图片来源自网络截图,侵删 不得不感 ...

  4. python简单代码 春节集五福-新年福利来一波之Python轻松集齐五福(demo)

    新的一年又要到来了,各个大的公司又在这年末为大家送上了新春的祝福,支付宝还是延续了这几年的传统,在年末为大家送上了集五福的活动,为了大家能更快更好的扫出来大大的"福",今天就带领大 ...

  5. 我用 Python 集齐了五福

      新智元推荐   来源:Crossin的编程教室 整理:元子 [新智元导读]又到了每年集五福的时间.你的五福集齐了吗?每天在各种群里苦苦求扫福,或者忍受着别人天天求扫福,是不是有点厌倦了.作为技术人 ...

  6. python模拟春节集五福_过年扫五福,干脆我用Python做一个五福生成器

    原标题:过年扫五福,干脆我用Python做一个五福生成器 新的一年又要到来了,各个大的公司又在这年末为大家送上了新春的祝福,支付宝还是延续了这几年的传统,在年末为大家送上了集五福的活动,为了大家能更快 ...

  7. 过年扫五福,干脆我用Python做一个五福生成器

    新的一年又要到来了,各个大的公司又在这年末为大家送上了新春的祝福,支付宝还是延续了这几年的传统,在年末为大家送上了集五福的活动,为了大家能更快更好的扫出来大大的"福",今天小编就带 ...

  8. 集五福2 python

    JiFu PACKAGE # 导入随机模块 import random # 获取福卡方法 def Ji_Fu():# 所有福卡列表fus=['爱国福','富强福','和谐福','友善福','敬业福'] ...

  9. 2022支付宝集五福 生肖卡添福红包活动攻略

    支付宝福集五福生肖卡攻略. 什么是五福生肖卡 ➊生肖卡是 五福期间一种特种卡,共有12个生肖. ❷集 五福的过程中会随机发放,各个集福渠道都有机会获得. 怎么获得生肖卡? 通过扫福.写福字.森林巡护保 ...

最新文章

  1. 多层陶瓷电容器用处_陶瓷电容的作用及特点
  2. unity3d的执行顺序
  3. json.stringify()与json.parse()的区别,json.stringify()的妙用
  4. OSI各层相关的协议
  5. c语言 函数的参数传递示例_llround()函数以及C ++中的示例
  6. 疑似小米10系列真机谍照首曝光:挖孔双曲面屏设计无疑
  7. Hadoop大数据之RAID
  8. hdu 4970 树状数组 “改段求段”
  9. C语言 符号的不同意义
  10. cmd 复制文件夹内容
  11. 算法分析-时间复杂度:大O、大Ω、大θ、小o、小ω
  12. 再玩五分钟手机就开始学习
  13. 黑苹果2k显示器开启hidpi_黑苹果开启硬件加速
  14. 计算机操作透明化,win10系统如何设置透明化效|win10电脑透明化功能怎么开启
  15. webpack 热更新
  16. 项目经理?项目成员?
  17. 体重计c语言程序,利用MSP430F149和HX711模块制作体重秤?
  18. 【长难句分析精讲】并列结构
  19. Android Content开头的Uri和文件绝对路径互相转换
  20. lammps案例:npt系综练手,H2压缩模拟

热门文章

  1. linux批量替换文件名中的相同字符
  2. Git 相关使用命令
  3. 轻松带你走进shiro的世界
  4. 开源的自然语言处理工具
  5. ext4.0 代理 的使用
  6. ***经验谈之SA权限***的感悟
  7. 你好,了解一下Java 14带来的一系列新功能
  8. 如何在 Mac 上启用 root 用户或更改 root 密码
  9. vue-flowy前端流程图绘制工具
  10. Jeecg开发平台 - Online表单专题课程