2.9 KiB
2.9 KiB
使用 Python 将图像转换成卡通
原文:https://www.askpython.com/python/examples/images-into-cartoons
你好,读者!在本教程中,我们将学习如何把图像变成卡通!很酷吧?!所以让我们开始吧!
1.导入模块
每个程序的第一步是将所有必要的模块(如果有的话)导入到我们的文件中。对于这个问题,我们将导入三个模块,即 openCV,numpy 和 matplotlib 模块。
import cv2
import numpy as np
import matplotlib.pyplot as plt
2.加载并绘制原始图像
下一步是使用imread功能读取图像,然后在cvtColor功能的帮助下将其转换为 RGB 格式。然后我们使用imshow函数绘制图像。相同的代码如下所示:
img = cv2.imread("image.jpg")
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis("off")
plt.title("Original Image")
plt.show()
3.将图像转换为灰度
该过程的下一步是使用cvtColor功能将图像转换成灰度格式。这样做的原因是它简化了过程,并有助于降低程序的时间复杂度。
实现相同功能的代码如下所示。
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 5)
plt.figure(figsize=(10,10))
plt.imshow(gray,cmap="gray")
plt.axis("off")
plt.title("Grayscale Image")
plt.show()
4.获取边缘图像
为了让事情变得简单,我们将获得灰度图像的边缘图像,然后将 T2 卷积网络应用于图像。
通过使用adaptiveThreshold并设置所需的参数来获得边缘图像,也可以做到这一点。下面显示了相同的代码。
edges = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 9)
plt.figure(figsize=(10,10))
plt.imshow(edges,cmap="gray")
plt.axis("off")
plt.title("Edged Image")
plt.show()
5.把图像变成卡通
最后一步是使用bilateralFilter函数应用卷积滤波器。然后,我们利用位运算,传递原始图像和边缘图像,将图像变成卡通。
相同的代码如下所示。
color = cv2.bilateralFilter(img, 9, 250, 250)
cartoon = cv2.bitwise_and(color, color, mask=edges)
plt.figure(figsize=(10,10))
plt.imshow(cartoon,cmap="gray")
plt.axis("off")
plt.title("Cartoon Image")
plt.show()
把图像变成卡通的最终输出
下图显示了从原始图像到卡通图像的所有不同版本的图像。
Cartoonify Image Output
代码已针对另一个图像进行了测试。结果如下。
Cartoonify Image Output 2
结论
恭喜你!今天你学会了如何通过几行代码把图片变成卡通。
希望你学到了一些东西!感谢您的阅读!

