前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python图像处理-磨皮

python图像处理-磨皮

原创
作者头像
程序员皮克
发布2022-01-05 14:12:46
6430
发布2022-01-05 14:12:46
举报
文章被收录于专栏:Python2

本篇是利用python来对图像进行磨皮祛斑,对人脸进行“美图”,首先来上效果图,第一张是原图,第二张是磨皮后的图(图源自互联网),可以看出效果挺好而且很自然不会很失真

整个过程和基本代码如下:

先用双边滤波进行降噪,双边滤波是一种非线性滤波,能够达到去噪保边的效果。相比高斯滤波,还考虑了灰度相似性,所以双边滤波是结合图像的空间邻近度和像素值相似度的一种折衷处理。

代码语言:javascript
复制
temp1 = cv2.bilateralFilter(img, 75, 255, 5)

然后将降噪后的图像减去原图像,提取需要处理的部分,可以可能到脸部有许多白色的斑点。

代码语言:javascript
复制
temp2 = cv2.subtract(temp1, img)

再对提取来的部分进行高斯降噪处理

代码语言:javascript
复制
temp3 = cv2.GaussianBlur(temp2, (5,5), 0)

可以看到脸上那些点被消除了,脸布变得平滑了

代码语言:javascript
复制
        temp4 = cv2.add(img, temp3)

然后再将降噪处理的部分和原图相加,获得最终磨皮后的图

所有代码:

代码语言:javascript
复制
        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)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档