使用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脚本
Feb 10 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 Python
python画蝴蝶曲线图的实例
Nov 21 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 Python
pyqt5打包成exe可执行文件的方法
May 14 Python
python numpy中multiply与*及matul 的区别说明
May 26 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读取xml实例代码
2010/01/28 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
php分页示例分享
2014/04/30 PHP
Redis构建分布式锁
2017/03/28 PHP
PHP实现百度人脸识别
2019/05/06 PHP
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
python对日志进行处理的实例代码
2018/10/06 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python添加菜单图文讲解
2019/06/04 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
python实现一个猜拳游戏
2020/04/05 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
Python sorted对list和dict排序
2020/06/09 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
小加工厂管理制度
2014/01/21 职场文书
劳动竞赛口号
2014/06/16 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
运动会宣传语
2015/07/13 职场文书
同学聚会祝酒词
2015/08/10 职场文书
终止合同协议书范本
2016/03/22 职场文书
Python集合的基础操作
2021/11/01 Python
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL