使用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类继承用法实例分析
May 27 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
Python中import机制详解
Nov 14 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
python实现kmp算法的实例代码
Apr 03 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
你可能不知道的Python 技巧小结
Jan 29 Python
我对PyTorch dataloader里的shuffle=True的理解
May 20 Python
实操Python爬取觅知网素材图片示例
Nov 27 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
php addslashes和mysql_real_escape_string
2010/01/24 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
python下10个简单实例代码
2017/11/15 Python
python中学习K-Means和图片压缩
2017/11/20 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
python实现人机猜拳小游戏
2020/02/03 Python
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
环保守法证明
2015/06/24 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
学习党章心得体会2016
2016/01/15 职场文书