使用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 Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
Python中有趣在__call__函数
Jun 21 Python
python通过加号运算符操作列表的方法
Jul 28 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 Python
Python3.4解释器用法简单示例
Mar 22 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
python实现图像拼接功能
Mar 23 Python
Python运行提示缺少模块问题解决方案
Apr 02 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
php 用sock技术发送邮件的函数
2007/07/21 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
IE与FireFox中的childNodes区别
2011/10/20 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
员工入职担保书范文
2014/04/01 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
拓展训练激励口号
2014/06/17 职场文书
2014年社区工作总结
2014/11/18 职场文书
圣诞晚会主持词
2015/07/01 职场文书