• 发文
  • 评论
  • 微博
  • 空间
  • 微信

学习如何使用 Python 将你的照片变成卡通版本

磐创AI 2023-04-18 14:31 发文

本文将介绍使用 Python 将普通图像转换为卡通版的各种方法。我们将使用 Python 库和包,例如OpenCV、Pillow、scikit-image和matplotlib。

以下是该过程的基本概要:

导入必要的包。使用我们正在使用的三个库之一加载图像(OpenCV,Pillow 或scikit-image)。将图像转换为灰度。获取图像的边缘。将图像转换为卡通版本。使用matplotlib.pyplot或OpenCv显示图像使用 OpenCV#import the packages

import cv2

import matplotlib.pyplot as plt

# Load the image using cv2

img = cv2.imread("4.jpg")

img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

#Convert to grayscale and apply median blur to reduce image noise

grayimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

grayimg = cv2.medianBlur(grayimg, 5)

#Get the edges 

edges = cv2.adaptiveThreshold(grayimg, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 5)

#Convert to a cartoon version

color = cv2.bilateralFilter(img, 9, 250, 250)

cartoon = cv2.bitwise_and(color, color, mask=edges)

#Display original image

plt.figure(figsize=(2,2))

plt.imshow(img)

plt.axis("off")

plt.title("Original Image")

plt.show()

#Display cartoon image

plt.figure(figsize=(2,2))

plt.imshow(cartoon)

plt.axis("off")

plt.title("Cartoon Image")

plt.show()

因为cv2 使用BGR颜色格式和matplotlib 使用RGB颜色格式,我们必须将BGR转换为RGB。

这可以使用以下代码完成:

img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

如果要使用 GUI 窗口显示输出,则cv2不需要转换颜色格式。可以使用以下代码在GUI窗口中查看:

#Display original image

cv2.imshow("Original Image", img)

#Display cartoon image

cv2.imshow("Cartoon", cartoon) 

#To keep the window open until the user closes it we can use 

# the cv2.waitKey method passing 0 as parameter

cv2.waitKey (0)

#Remove the window from screen and memory after exiting the script

cv2.destroyAllWindows()

结果是这样的:

       使用 skimage#import the packages

from skimage import io, color

from skimage.filters import sobel

from skimage.segmentation import felzenszwalb

import matplotlib.pyplot as plt

# Load the image

img = io.imread("original.jpg")

# Convert to grayscale

grayimg = color.rgb2gray(img)

# Apply the felzenszwalb segmentation

segments_fz = felzenszwalb(img, scale=100, sigma=0.5, min_size=50)

# Convert to a cartoon version

cartoon = color.label2rgb(segments_fz, img, kind='avg')

#Display original image

plt.figure(figsize=(2,2))

plt.imshow(img)

plt.axis("off")

plt.title("Original Image")

plt.show()

#Display cartoon image

plt.figure(figsize=(2,2))

plt.imshow(cartoon)

plt.axis("off")

plt.title("Cartoon Image")

plt.show()

结果是这样的:

使用 PIL#Import the packages

import matplotlib.pyplot as plt

from PIL import Image, ImageOps, ImageFilter

# Load the image

img = Image.open("original.jpg")

# Convert to a cartoon version

cartoon = ImageOps.posterize(img, 2)

#Display the original image

plt.figure(figsize=(2,2))

plt.imshow(img)

plt.axis("off")

plt.title("Original Image")

plt.show()

#Display the cartoon image

plt.figure(figsize=(2,2))

plt.imshow(cartoon)

plt.axis("off")

plt.title("Cartoon Image")

plt.show()

结果是这样的:

总之,使用 Python 将图像转换为卡通是一项简单而强大的任务。借助OpenCV、Pillow 和scikit-image等包的帮助,只需几行代码即可将图像卡通化。你可以尝试使用这些工具并了解如何将你的图片变成令人惊叹的卡通图片。

快乐编码!

声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    磐创AI

    人工智能前沿技术分享。...

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码