内容简介:快过年了,各种互联网产品都出来撒红包。某宝一年一度的集五福(shua hou)活动更是成为每年的必备活动。虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹。毕竟对于如今生活在大城市的人来说,集福领红包和空荡的地铁车厢或许已是最大的“年味”了。既然是凑热闹,怎么能少得了我。前年过年发过一篇:《
快过年了,各种互联网产品都出来撒红包。某宝一年一度的集五福(shua hou)活动更是成为每年的必备活动。虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹。毕竟对于如今生活在大城市的人来说,集福领红包和空荡的地铁车厢或许已是最大的“年味”了。
既然是凑热闹,怎么能少得了我。前年过年发过一篇:《 一行代码扫出“敬业福” 》,介绍的是 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 展示和保存图片则不需要。
上面的效果分别用到了以下功能:
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 个福。试过了,都能被扫出来。我已集齐
如果你还没凑齐,可以扫这个图。祝大家新年有福气!
════
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Opencv图像处理系列(六)—— 图像梯度
- Opencv图像处理系列(九)—— 图像轮廓
- Python 图像处理 OpenCV (15):图像轮廓
- Opencv图像处理系列(三)——图像二值化
- Opencv图像处理系列(八)—— 图像金字塔
- Facebook 开源图像处理库 Spectrum,优化移动端图像生成
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
PHP、MySQL和Apache编程导学
梅隆尼 / 李军 / 2009-1 / 59.00元
《PHP、MySQL和Apache编程导学(原书第4版)》介绍Web应用开发的强大组合工具:MySQL、Apache和PHP,共分为六个部分。第一部分引领读者深入了解、安装和配置MySQL、Apache和PHP。第二部分讲解PHP语言基础,包括数组和对象这样的结构化元素。第三部分介绍中级应用程序开发的主题,包括使用表单和文件、限制访问以及完成包含某个专门概念的小项目。第四部分介绍使用数据库的一般性......一起来看看 《PHP、MySQL和Apache编程导学》 这本书的介绍吧!