使用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的Django框架中从url中捕捉文本的方法
Jul 20 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
windows下python安装小白入门教程
Sep 18 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
python 用struct模块解决黏包问题
Nov 07 Python
Pygame Event事件模块的详细示例
Nov 17 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猴子选大王问题解决方法
2015/05/12 PHP
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
python代码制作configure文件示例
2014/07/28 Python
python中对list去重的多种方法
2014/09/18 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
关于Python-faker的函数效果一览
2019/11/28 Python
opencv+python实现均值滤波
2020/02/19 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
一份报关员的职业规划范文
2014/01/08 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
教师节寄语2015
2015/03/23 职场文书
吴仁宝观后感
2015/06/09 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
MySQL 计算连续登录天数
2022/05/11 MySQL