新年福利来一波之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对小数进行除法运算的正确方法示例
Aug 25 Python
python多线程threading.Lock锁用法实例
Nov 01 Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
python 实现UTC时间加减的方法
Dec 31 Python
python操作kafka实践的示例代码
Jun 19 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
Python基于WordCloud制作词云图
Nov 29 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 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
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
js+html5实现侧滑页面效果
2017/07/15 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
python2 与python3的print区别小结
2018/01/16 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
wxPython色环电阻计算器
2019/11/18 Python
python numpy 反转 reverse示例
2019/12/04 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
python实现图片转字符画的完整代码
2021/02/21 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
纪念建党演讲稿范文
2014/01/13 职场文书
村庄环境整治方案
2014/05/15 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
学校安全管理制度
2015/08/06 职场文书
初中班主任工作随笔
2015/08/15 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android