请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

python图像处理:一福变五福

[复制链接]
查看: 26|回复: 0

2万

主题

2万

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
71559
发表于 2020-1-14 15:18 | 显示全部楼层 |阅读模式
快过年了,各类互联网产物都出来撒红包。某宝一年一度的“集五福活动”更是成为每年的必备活动之一。
虽然到末端每人大要也就分个两块钱,但作为一个全民话题,大大都人照旧愿意凑凑热烈。
究竟对于现在保存在大都会的人来说,集福领红包和空荡的地铁车箱大要已是最大的“年味”了。


[img=auto,auto]http://www.waysfocus.com/https://upload-images.jianshu.io/upload_images/20592807-832538b27dae91e1?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240[/img]
既然是凑热烈,怎样能少得了我。
之前我(GitPython公众号)发过一篇:《10几行代码,用python打造实时截图识别OCR》,先容的是OCR翰墨识此外操纵。

本篇文章再来对“福”字做文章,演示下怎样用python图像处置赏罚功用,把一幅“福”字图片转出 5 种差别的成果:

我的关键词 python图像处置:一福变五福  热门消息
我的关键词 python图像处置:一福变五福  热门消息

python最图像处置赏罚最常用的两个模块是PIL和OpenCV,这里我们挑选 OpenCV。
读取图片及展现代码:
  1. import cv2from matplotlib import pyplot as pltimg = cv2.imread('fu.png')# 转换色彩形式,表示原图img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)plt.imshow(img)plt.show()
复制代码
我的关键词 python图像处置:一福变五福  热门消息

由于 OpenCV 和 matplotlib 的色彩形式纷歧样,所以必要做一次转换,假如是间接经过 cv2 展现和保存图片则不必要。

上面的成果别离用到了以下功用:

01
灰度福

这里没有挑选间接将图片转出灰度图,由于这样会致使福字不明显。而是经过将红、绿、蓝三通道分手后,挑选色差最大的红色通道。
  1. r,g,b = cv2.split(img)
复制代码
我的关键词 python图像处置:一福变五福  热门消息

02
表面福

操纵了 OpenCV 自带的图像表面提取功用。为了更好的成果,这里对红色通道举行二值化后,再查找表面。
  1. _, 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)
复制代码
我的关键词 python图像处置:一福变五福  热门消息

03
反色福

发色的实现是将每个像素值 x 转成 255-x。假如遍历像素盘算会比力慢,因而用了一个小技能:转成numpy的ndarray再举行矩阵运算。
  1. img_i = np.asarray(img)img_i = 255 - img_i
复制代码
我的关键词 python图像处置:一福变五福  热门消息

04
收缩福

这里实在是“图像腐蚀”操纵(与“图像收缩”操纵相反)。由于在我们拔取的红色通道中,红色是被页粳黑色才是福字,所以对红色的“腐蚀”也就是对黑色的“收缩”。这也是OpenCV的内置功用。

做完这一步,又对图像举行了切割,间接经过列表的切片操纵实现。
  1. kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(25, 25))eroded = cv2.erode(r, kernel)size = img.shapeeroded = eroded[int(size[1]*0.15):int(size[1]*0.7),int(size[0]*0.2):int(size[0]*0.85)]
复制代码
我的关键词 python图像处置:一福变五福  热门消息

05
福到了

OpenCV 供给了翻转操纵,第二个参数是扭转轴的拔取,你可以试试 0 和 1 的成果。
  1. img_r = cv2.flip(img, -1)
复制代码
我的关键词 python图像处置:一福变五福  热门消息

免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 淄博新闻网-淄博日报 淄博晚报 淄博财经新报 掌中淄博 淄博专业新闻资讯发布网站 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表