使用OpenCV实现人脸图像卡通化的示例代码


Posted in Python onJanuary 15, 2021

引言

通过前面的文章我们已经了解到OpenCV 是一个用于计算机视觉和机器学习的开源 python 库。它主要针对实时计算机视觉和图像处理。它用于对图像执行不同的操作,这些操作使用不同的技术对图像进行转换。在本文中,我们将实现使用OpenCV将人脸图像卡通化。

让我们从导入必需的库开始!

import cv2
import numpy as np

第一次变换(卡通化)

在这个转换中,我们将找到图像的边缘,并使用双边滤波器和位操作符制作一个卡通化的图像。

# Reading the Image 
image = cv2.imread("image1.jpg")
# Finding the Edges of Image
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
gray = cv2.medianBlur(gray, 7) 
edges = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 10)
# Making a Cartoon of the image
color = cv2.bilateralFilter(image, 12, 250, 250) 
cartoon = cv2.bitwise_and(color, color, mask=edges)
#Visualize the cartoon image 
cv2.imshow("Cartoon", cartoon) 
cv2.waitKey(0) # "0" is Used to close the image window
cv2.destroyAllWindows()

使用OpenCV实现人脸图像卡通化的示例代码

第二次变换(模糊图像)

在第二次变换中,我们尝试用一个边缘保持滤波器来模糊图像,并在边缘上加入一个阈值。在这里我们使用的是高斯模糊。

#convert to gray scale
grayImage = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#apply gaussian blur
grayImage = cv2.GaussianBlur(grayImage, (3, 3), 0)
#detect edges
edgeImage = cv2.Laplacian(grayImage, -1, ksize=5)
edgeImage = 255 - edgeImage
#threshold image
ret, edgeImage = cv2.threshold(edgeImage, 150, 255, cv2.THRESH_BINARY)
#blur images heavily using edgePreservingFilter
edgePreservingImage = cv2.edgePreservingFilter(image, flags=2, sigma_s=50, sigma_r=0.4)
#create output matrix
output =np.zeros(grayImage.shape)
#combine cartoon image and edges image
output = cv2.bitwise_and(edgePreservingImage, edgePreservingImage, mask=edgeImage)
#Visualize the cartoon image 
cv2.imshow("Cartoon", output) 
cv2.waitKey(0) # "0" is Used to close the image window
cv2.destroyAllWindows()

使用OpenCV实现人脸图像卡通化的示例代码

第三次变换(风格化)

在这一变换过程中,我们将运用风格化的手法,创造出形象的卡通效果。

cartoon_image = cv2.stylization(image, sigma_s=150, sigma_r=0.25) 
cv2.imshow('cartoon', cartoon_image) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

使用OpenCV实现人脸图像卡通化的示例代码

第四次变换(铅笔素描)

在这个变换中,我们将分别创建一个彩色和黑白的铅笔素描草图形象。

cartoon_image1, cartoon_image2 = cv2.pencilSketch(image, sigma_s=60, sigma_r=0.5, shade_factor=0.02) 
cv2.imshow('pencil', cartoon_image1) 
cv2.waitKey() 
cv2.destroyAllWindows()

使用OpenCV实现人脸图像卡通化的示例代码

cv2.imshow('pencil', cartoon_image2)  
cv2.waitKey()  
cv2.destroyAllWindows()

使用OpenCV实现人脸图像卡通化的示例代码

总结

在本文中我们通过四次不同的变换将一个人脸图像进行了卡通化。通过这些变换,我们对OpenCV有了更加深入的了解,快来动手试试吧~

到此这篇关于使用OpenCV实现人脸图像卡通化的示例代码的文章就介绍到这了,更多相关OpenCV 人脸图像卡通化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
python pandas修改列属性的方法详解
Jun 09 Python
使用python判断你是青少年还是老年人
Nov 29 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
python里运用私有属性和方法总结
Jul 08 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
python2 对excel表格操作完整示例
Feb 23 Python
python pandas.DataFrame.loc函数使用详解
Mar 26 Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 #Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 #Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 #Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 #Python
使用Django的JsonResponse返回数据的实现
Jan 15 #Python
浅析Python打包时包含静态文件处理方法
Jan 15 #Python
pycharm 关闭search everywhere的解决操作
Jan 15 #Python
You might like
加速XP搜索功能堪比vista
2007/03/22 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
php 面向对象的一个例子
2011/04/12 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
php计算title标题相似比的方法
2015/07/29 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
详解ES6中的let命令
2020/04/05 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
python使用urlparse分析网址中域名的方法
2015/04/15 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python如何读取bin文件并下发串口
2019/07/05 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
法国体育用品商店:GO Sport
2019/10/23 全球购物
商务考察邀请函范文
2014/01/21 职场文书
自荐信的格式
2014/03/10 职场文书
珍惜资源的建议书
2014/08/26 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
新郎新娘答谢词
2015/01/04 职场文书
团支部书记竞选稿
2015/11/21 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang