关键词搜索

源码搜索 ×
×

Python文档阅读笔记-Turn Images into Cartoons using Python

发布2023-01-09浏览1422次

详情内容

本博文说明如何将图片转为卡通风格。

1. 导入依赖模块

在编程的第一步首先要导入依赖库,在这个图像转换成卡通风格的程序中需要包含3个模块,分别是openCV,numpy,matpoltlib。

  1. import cv2
  2. import numpy as np
  3. import matplotlib.pyplot as plt

2. 加载并绘制原始图片

第二步是使用imread函数读取图片,再使用cvtColor函数将图片转换为RGB格式。随后使用imshow函数绘制图片。代码如下所示:

  1. img = cv2.imread("image.jpg")
  2. img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
  3. plt.figure(figsize=(10,10))
  4. plt.imshow(img)
  5. plt.axis("off")
  6. plt.title("Original Image")
  7. plt.show()

3. 将图片转换为灰度

这一步是使用cvColor函数将图片转换为灰度图。做这一步的原因是使用灰度图可以减少程序的时间复杂度。

代码如下所示。

  1. gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  2. gray = cv2.medianBlur(gray, 5)
  3. plt.figure(figsize=(10,10))
  4. plt.imshow(gray,cmap="gray")
  5. plt.axis("off")
  6. plt.title("Grayscale Image")
  7. plt.show()

4. 获取边缘图片

图片边缘化能够使得处理更加简单,从灰度图像中获取边缘图片,然后将此边缘图片进行卷积网络。

使用adaptiveThreshold进行参数的设置,从而获取边缘图片,代码如下:

  1. edges = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 9)
  2. plt.figure(figsize=(10,10))
  3. plt.imshow(edges,cmap="gray")
  4. plt.axis("off")
  5. plt.title("Edged Image")
  6. plt.show()

5. 将图片转换为卡通风格

最后使用bilateralFilter函数进行卷积过滤。通过逐位运算,使用原始图片和卷积图片最终生成卡通图。

代码如下:

  1. color = cv2.bilateralFilter(img, 9, 250, 250)
  2. cartoon = cv2.bitwise_and(color, color, mask=edges)
  3. plt.figure(figsize=(10,10))
  4. plt.imshow(cartoon,cmap="gray")
  5. plt.axis("off")
  6. plt.title("Cartoon Image")
  7. plt.show()

最后输出的卡通图片

下面展示不同原始图片转换为不同版本的图片。

 

 试下其他图片:

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载