使用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 pygame安装过程笔记
Jun 05 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
python装饰器常见使用方法分析
Jun 26 Python
python实现超市商品销售管理系统
Nov 22 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
教你如何使用Python下载B站视频的详细教程
Apr 29 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
PHP网站基础优化方法小结
2008/09/29 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
Python内置的字符串处理函数整理
2013/01/29 Python
python杀死一个线程的方法
2015/09/06 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
python 性能优化方法小结
2017/03/31 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
公益活动策划方案
2014/01/09 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
战略合作意向书范本
2014/04/01 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
单位更名证明
2015/06/18 职场文书