使用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通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
python 异常处理总结
Oct 18 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
python实现彩票系统
Jun 28 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
python的等深分箱实例
Nov 22 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
python能开发游戏吗
Jun 11 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
python实现的人脸识别打卡系统
May 08 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
生成缩略图
2006/10/09 PHP
PHP 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
Prototype Object对象 学习
2009/07/12 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Django 数据库同步操作技巧详解
2019/07/19 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
python openpyxl模块的使用详解
2021/02/25 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
求职信范文怎么写
2014/01/29 职场文书
学校大课间活动方案
2014/01/30 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
MySQL 计算连续登录天数
2022/05/11 MySQL
OpenFeign实现远程调用
2022/08/14 Java/Android