本篇是利用python来对图像进行磨皮祛斑,对人脸进行“美图”,首先来上效果图,第一张是原图,第二张是磨皮后的图(图源自互联网),可以看出效果挺好而且很自然不会很失真
文章图片
文章图片
整个过程和基本代码如下:
先用双边滤波进行降噪,双边滤波是一种非线性滤波,能够达到去噪保边的效果。相比高斯滤波,还考虑了灰度相似性,所以双边滤波是结合图像的空间邻近度和像素值相似度的一种折衷处理。
temp1 = cv2.bilateralFilter(img, 75, 255, 5)
文章图片
然后将降噪后的图像减去原图像,提取需要处理的部分,可以可能到脸部有许多白色的斑点。
temp2 = cv2.subtract(temp1, img)
文章图片
再对提取来的部分进行高斯降噪处理
temp3 = cv2.GaussianBlur(temp2, (5,5), 0)
【python图像处理-磨皮】
文章图片
可以看到脸上那些点被消除了,脸布变得平滑了
temp4 = cv2.add(img, temp3)
然后再将降噪处理的部分和原图相加,获得最终磨皮后的图
文章图片
所有代码:
import cv2
img = cv2.imread("pic")temp4 = np.zeros_like(img)
temp1 = cv2.bilateralFilter(img, 75, 255, 5)
cv2.imshow("temp1 ", temp1)
temp2 = cv2.subtract(temp1, img)
cv2.imshow("temp2 ", temp2)
temp2 = cv2.add(temp2, (10, 10, 10, 128))
# cv2.imshow("temp 2_2", temp2)
# temp3 = cv2.GaussianBlur(temp2, (2 * v2 - 1, 2 * v2 - 1), 0)
temp3 = cv2.GaussianBlur(temp2, (5,5), 0)
cv2.imshow("temp 3", temp3)
temp4 = cv2.add(img, temp3)
cv2.imshow("temp 4", temp4)
dst = cv2.addWeighted(dst, p, temp4, 1 - p, 0.0)
dst = cv2.add(dst, (10, 10, 10, 255))
cv2.imshow("results ", dst)
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)