新年福利来一波之Python轻松集齐五福(demo)


Posted in Python onJanuary 20, 2020

新的一年又要到来了,各个大的公司又在这年末为大家送上了新春的祝福,支付宝还是延续了这几年的传统,在年末为大家送上了集五福的活动,为了大家能更快更好的扫出来大大的“福”,今天就带领大家利用python做一个一“福”转“N”福的小demo。

先看效果图

新年福利来一波之Python轻松集齐五福(demo)

首先,我们需要拿到一张大大的“福”字图片,然后,我们就可以对于这张图进行操作了。我们今天要实现的就是将一张“福”字转化为五种不同的风格,现为大家呈上效果图。

灰度图

首先为大家展示的是灰度图,灰度图就是将彩色的RGB三通道图像,转化为单通道的灰色图像,RGB三个通道的颜色通过比例系数进行相加。程序如下所示。

def Gray_fu(self):
 gray_img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
 return gray_img

轮廓图

接下来是轮廓图,轮廓图需要输入一张灰度图像,首先是对图像进行滤波处理,去除噪声,然后针对于灰色的图片中像素突然变化的点来检测边缘,什么是边缘突然变化呢,参考我们的灰度图,灰度图中,“福”字的边缘同背景颜色出现了巨大的差异,这种差异就是寻找边缘轮廓的依据,程序如下图所示。

def Canny_fn(self):
 img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
 img = cv2.GaussianBlur(img, (3, 3), 0)
 canny_img = cv2.Canny(img, 50, 150)
 return canny_img

反色图

对于反色图,理解起来并不难,就是用255减去将原图中的每一个像素值,得到的就是我们的反色图,程序如下:

def invert_fu(self):
 img = 255 - self.ori_img
 return img

腐蚀图

对于腐蚀图,因为在我们选取的图像中,红色是背景,黑色才是福字,所以对红色进行膨胀也就是对黑色进行腐蚀。这也是 OpenCV 的内置功能。我们只需要调用opencv中的膨胀函数即可。

def dilate_fu(self):
 # img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
 kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
 img = cv2.dilate(self.ori_img, kernel, iterations=1)
 print(img.shape)
 return img

福到家

最后是我们的“福到家”,我们只需要将福字进行旋转即可。

def rotate_fu(self):
 img = cv2.rotate(self.ori_img, 1)
 return img

完整代码

import cv2
class Change_pic():
 def __init__(self, img):
  self.ori_img = cv2.imread(img)
 def Gray_fu(self):
  '''灰度图'''
  gray_img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
  return gray_img
 def Canny_fn(self):
  '''轮廓图'''
  img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
  img = cv2.GaussianBlur(img, (3, 3), 0)
  canny_img = cv2.Canny(img, 50, 150)
  return canny_img
 def invert_fu(self):
  '''反色图'''
  img = 255 - self.ori_img
  return img
 def dilate_fu(self):
  '''腐蚀图'''
  # img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
  kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
  img = cv2.dilate(self.ori_img, kernel, iterations=1)
  print(img.shape)
  return img
 def rotate_fu(self):
  '''福到家'''
  img = cv2.rotate(self.ori_img, 1)
  return img

总结

以上所述是小编给大家介绍的新年福利来一波之Python轻松集齐五福,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python匹配中文的正则表达式
May 11 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
基于python requests库中的代理实例讲解
May 07 Python
python使用插值法画出平滑曲线
Dec 15 Python
python使用selenium实现批量文件下载
Mar 11 Python
python如何删除文件中重复的字段
Jul 16 Python
python构建指数平滑预测模型示例
Nov 21 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
python 模拟登录B站的示例代码
Dec 15 Python
Python timer定时器两种常用方法解析
Jan 20 #Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 #Python
如何通过Django使用本地css/js文件
Jan 20 #Python
Python中 Global和Nonlocal的用法详解
Jan 20 #Python
Django后台管理系统的图文使用教学
Jan 20 #Python
解决Pycharm的项目目录突然消失的问题
Jan 20 #Python
Python log模块logging记录打印用法解析
Jan 20 #Python
You might like
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python字符串与url编码的转换实例
2018/05/10 Python
Python输出指定字符串的方法
2020/02/06 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
explicit和implicit的含义
2012/11/15 面试题
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
选秀节目策划方案
2014/06/06 职场文书
政协调研汇报材料
2014/08/15 职场文书
迟到检讨书范文
2015/01/27 职场文书
研究生导师推荐信
2015/03/25 职场文书
单身证明格式样本
2015/06/15 职场文书
上班旷工检讨书
2015/08/15 职场文书
golang json数组拼接的实例
2021/04/28 Golang
Vue和Flask通信的实现
2021/05/19 Vue.js
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang