您可以通过在Python中实现机器学习算法为照片赋予卡通效果。

如您所知,素描或创建卡通不一定总是需要手动完成。如今,许多应用程序都可以将您的照片变成卡通。但是,如果我告诉您,您可以用几行代码创建自己的效果?

有一个名为OpenCV的库,它为计算机视觉应用程序提供了通用的基础结构,并优化了机器学习算法。它可用于识别物体,检测并生成高分辨率图像。

在本教程中,我将向您展示如何利用OpenCV在Python中为图像赋予卡通效果。我使用Google Colab编写和运行代码。您可以在此处访问完整代码。

要创建卡通效果,我们需要注意两点:边缘和调色板。这些就是照片和卡通之间的区别。要调整这两个主要组成部分,我们将经历四个主要步骤:

  1. 加载图片
  2. 创建边缘掩膜
  3. 减少调色板
  4. 将边缘掩膜与彩色图像结合

在跳到主要步骤之前,请不要忘记在笔记本中导入所需的库,尤其是cv2和NumPy。

加载图片

第一步是加载图像。定义read_file函数,其中包括cv2_imshow以将我们选择的图像加载到Google Colab中。

def read_file(filename):img = cv2.imread(filename)cv2_imshow(img)return img

调用创建的函数以加载图像。

uploaded = files.upload()
filename = next(iter(uploaded))
img = read_file(filename)

我选择下面的图像将其转换为卡通。

创建边缘掩膜

通常,卡通效果会强调图像边缘的厚度。我们可以使用cv2.adaptiveThreshold()函数检测图像中的边缘。

总体而言,我们可以将egde_mask函数定义为:

def edge_mask(img, line_size, blur_value):gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)gray_blur = cv2.medianBlur(gray, blur_value)edges = cv2.adaptiveThreshold(gray_blur, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, line_size, blur_value)return edges

在该函数中,我们将图像转换为灰度。 然后,我们使用cv2.medianBlur降低了模糊灰度图像的噪声。 模糊值越大,意味着图像中出现的黑噪声越少。 然后,应用adaptiveThreshold函数,并定义边缘的线大小。 较大的线条尺寸表示图像中将强调的较粗的边缘。

定义函数后,调用它并查看结果。

line_size = 7
blur_value = 7
edges = edge_mask(img, line_size, blur_value)
cv2_imshow(edges)

减少调色板

照片和绘图之间在颜色方面的主要区别在于它们各自中不同颜色的数量。 图纸的颜色比照片少。 因此,我们使用色彩量化来减少照片中的色彩数量。

颜色量化

为了进行颜色量化,我们应用了OpenCV库提供的K-Means聚类算法。为了使下一步变得更容易,我们可以如下定义color_quantization函数。

def color_quantization(img, k):
# Transform the imagedata = np.float32(img).reshape((-1, 3))# Determine criteriacriteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 20, 0.001)# Implementing K-Meansret, label, center = cv2.kmeans(data, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)center = np.uint8(center)result = center[label.flatten()]result = result.reshape(img.shape)return result

我们可以调整k值来确定要应用于图像的颜色数量。

total_color = 9
img = color_quantization(img, total_color)

在这种情况下,我将9用作图像的k值。结果如下所示。

双边过滤器

完成色彩量化后,我们可以使用双边滤波器来减少图像中的噪点。这会给图像带来一些模糊和锐度降低的效果。

blurred = cv2.bilateralFilter(img, d=7, sigmaColor=200,sigmaSpace=200)

您可以根据自己的喜好调整三个参数:

  • d —每个像素邻域的直径。
  • sigmaColor —参数的值越大,表示面积越大的半均等颜色。
  • sigmaSpace –该参数的值越大,表示越远的像素就会相互影响,只要它们的颜色足够接近即可。

结合边缘掩膜和彩色图像

最后一步是将我们先前创建的边缘掩膜与经过颜色处理的图像结合起来。为此,请使用cv2.bitwise_and函数。

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

在这里!我们可以在下面看到原始照片的“卡通版”。

详情参阅 - 亚图跨际

Python卡通化照片相关推荐

  1. Python实现照片卡通化,一拳打破次元壁 | 机器学习

    目录 前言 项目结构 核心代码 总结 前言 接着我上一篇开源机器学习的使用:如何将照片变成卡通图,animegan2-pytorch机器学习项目使用 | 机器学习_阿良的博客-CSDN博客 我还是继续 ...

  2. python头像转卡通_【Python】照片卡通化

    导语 最近想换个好看点的卡通头像,于是想着可以尝试利用Python与一些图像处理技术将照片卡通化,没有使用深度学习,只是做了些简单的尝试,过来分享一波,效果一般般吧,感觉可以凑合着用用. 让我们愉快地 ...

  3. 用 python 快速「卡通化」人物头像

    大家好,我是天作. 这个项目让我想起了以前玩QQ秀的时光.有了这个项目,再也不用找同学了,我自己也可以把头像卡通化了. 该项目为小视科技卡通肖像探索项目.可使用微信扫描下方二维码或搜索"AI ...

  4. python视频处理为卡通风格_用 python 快速「卡通化」人物头像

    这个项目让我想起了以前玩QQ秀的时光.有了这个项目,再也不用找同学了,我自己也可以把头像卡通化了. 下图是我的头像.不得不说还真是神似. 人像卡通风格渲染的目标是,在保持原图像ID信息和纹理细节的同时 ...

  5. 什么软件可以把真人照片卡通化、动漫化?

    相信大家平时也看过很多动漫,你是不是觉得动漫人物很可爱,是不是经常把自己代入动漫场景中?许多朋友说,他们想也想看看自己变成动漫卡通人物会是什么样子,并想制作自己的卡通肖像.事实上,这并不难实现. 对于 ...

  6. CartoonGAN_CVPR_2018为照片卡通化而生的对抗网络论文阅读笔记

    CartoonGAN_CVPR_2018 好了 进入正题 话不多说 快上车 CartoonGAN: Generative Adversarial Networks for Photo Cartooni ...

  7. Sketch n Cartoonize for mac(照片卡通化素描化编辑工具)

    Sketch n Cartoonize 可以使用复杂的算法来实现"逼真的"和"近乎完美"的卡通外观,获得您想要的照片效果. Sketch n Cartooniz ...

  8. python多张照片拼成一张人脸,使用OpenCV实现人脸图像卡通化的示例代码

    引言 通过前面的文章我们已经了解到OpenCV 是一个用于计算机视觉和机器学习的开源 python 库.它主要针对实时计算机视觉和图像处理.它用于对图像执行不同的操作,这些操作使用不同的技术对图像进行 ...

  9. 卡通化图片python实现代码_媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。...

    ​    最近某音上的动漫特效特别火,很多人都玩着动漫肖像,我媳妇儿也不例外.看着她这么喜欢这个特效,我决定做一个图片处理工具,这样媳妇儿的动漫头像就有着落了. 编码 为了快速实现我们的目标,我们就不 ...

最新文章

  1. 基于 CoreText 实现的高性能 UITableView
  2. 程序员,想要彻底弄懂Redis,这15点你一定要明白~(纯干货)
  3. 初窥江湖之PhotoShop抠图(一)
  4. zsh 隐藏用户名和主机
  5. 卷积神经网络的整体结构、卷积层、池化、python实现
  6. MySQL用户管理和权限管理
  7. 小度智能音响拆解 芯片_不拆不快:小度音箱拆解测评
  8. 天梯—计算指数(C语言)
  9. php while次数,PHP While 循环
  10. wxid转扫一扫协议加好友
  11. 特斯拉为什么要降价?
  12. XCode8编译失败问题
  13. 元气骑士如何获得机器人成就皮肤_元气骑士成就系统攻略 成就获取方法一览...
  14. 将Excel数据导入到Notes应用
  15. UEStudio V17.00.0.25 免费版 代码编辑器
  16. cadence学习资料整理
  17. Python实现简易版学生信息管理系统,包含源码及相关实现说明~
  18. iOS开发系列-音频、视频以及摄像
  19. 数据库查询去重,rank over的使用
  20. 十多年零工资!马斯克获得近8亿美元绩效股票期权奖励

热门文章

  1. python一键安装所有插件_python 离线安装插件包
  2. 资源-能力-价值模型(RCV模型)
  3. Wiki.js 设置语言为中文
  4. ply格式转为obj,stl等格式
  5. 追梦算法----P1072. 排队打水
  6. leetcode 猫和老鼠
  7. 在线算法与竞争度分析
  8. 2020-07-03:简单的图书管理系统(Python、SQL Server)
  9. 每天坚持喝一杯茶,会得到什么?什么时候喝有讲究,别挑错时间
  10. 下拉框系统甄选火星推荐_下拉框词工具都选16火星软件,下拉框词工具佳选23火星...