美文网首页
python图像处理:一福变五福

python图像处理:一福变五福

作者: Python新视界 | 来源:发表于2020-01-14 13:23 被阅读0次

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

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

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

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

之前我(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图像处理:一福变五福

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

  • PIL基本操作

    PIL: python图像处理类库 PIL(Python Imaging Library Python,图像处理类...

  • 支付宝集五福今年还有豪礼,附五福攻略

    支付宝集五福来了,那离过年真的很近了。 不论外面的世界怎么变 五福不会变,五福来了就是年。 看完了支付宝推出的电影...

  • Python进行基本的图像操作与处理

    PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大...

  • Python Imaging Library

    Python Imaging Library ( PIL ) 给 Python 增加了图像处理能力。 图像存储 图...

  • 五福临门需要自己去争取

    五福临门是中华民族的一种传统祝福。 那么五福是哪五福呢? 五福含意:第一福是“长寿”、第二福是“富贵”、第三福是“...

  • 五福

    春节贴春联时,常见到“五福临门”这四个字?可是五福到底是哪五福?又怎么才能得到五福呢? 首先说五福。一般来说五福指...

  • PIL居中对齐文本

    Python图像处理PIL各模块详细介绍

  • Skimage

    Python中常用图像处理库 skimage opencv PIL (Python Imaging Library...

  • 图像处理库 pillow(一)

    Python 提供了 PIL(python image library)图像库,来满足开发者处理图像的功能,该库提...

网友评论

      本文标题:python图像处理:一福变五福

      本文链接:https://www.haomeiwen.com/subject/wihnactx.html