使用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 Deque 模块使用详解
Jul 04 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
python中 chr unichr ord函数的实例详解
Aug 06 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
django-allauth入门学习和使用详解
Jul 03 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
8段用于数据清洗Python代码(小结)
Oct 31 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
opencv 图像滤波(均值,方框,高斯,中值)
Jul 08 Python
python如何对链表操作
Oct 10 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
Python正则表达式的使用范例详解
2014/08/08 Python
python之django母板页面的使用
2018/07/03 Python
python中时间模块的基本使用教程
2019/05/14 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
pytorch实现线性拟合方式
2020/01/15 Python
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
开工庆典邀请函范文
2014/01/16 职场文书
医师定期考核实施方案
2014/05/07 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
先进党支部事迹材料
2014/12/24 职场文书
书法社团活动总结
2015/05/07 职场文书
房地产项目合作意向书
2015/05/08 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
详解Redis主从复制实践
2021/05/19 Redis