使用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网络编程之数据传输UDP实例分析
May 20 Python
Python读写txt文本文件的操作方法全解析
Jun 26 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
Python enumerate函数功能与用法示例
Mar 01 Python
python 对字典按照value进行排序的方法
May 09 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 Python
python——全排列数的生成方式
Feb 26 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 Python
如何在Python项目中引入日志
May 31 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怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
PHP时间类完整代码实例
2021/02/26 PHP
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
Python实现的最近最少使用算法
2015/07/10 Python
Python处理CSV与List的转换方法
2018/04/19 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
set在python里的含义和用法
2019/06/24 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
工业自动化专业毕业生推荐信
2013/11/18 职场文书
四年级科学教学反思
2014/02/10 职场文书
经典促销广告词大全
2014/03/19 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
协议书的格式
2014/04/23 职场文书
单位委托书
2014/10/15 职场文书