OpenCV实现人脸磨皮的算法和原理是什么,怎么理解
Admin 2022-07-01 群英技术资讯 328 次浏览
人脸磨皮是最基础的人脸美颜效果。主要分为祛斑,祛痘,淡化黑眼圈等步骤。通过前面的学习相信大家一眼都看得出来我们需要干什么才能识别人脸磨皮效果。
因为磨皮之后,脸部的杂质基本上就没有了,也可以说丢失了细节。那么肯定需要用到滤波函数。滤波的过程就是把图像的每一个像素值输入过滤器,得到平滑的图像。
而我们常用的滤波有均值滤波,高斯滤波以及双边滤波三种,到底选用那种滤波呢?
首先,均值滤波会因为是用周围像素的平均值代替原像素值,肯定会导致图像过于模糊,所以排除掉。其次,高斯滤波与均值滤波原理类似,只是高斯滤波器的模板系数会随着距离模板中心的增大而减小,虽然可以减弱图像的模糊程度,但是图像边缘信息会丢失。
那么,只剩一个滤波了,也就是双边滤波器。因为它同时综合了高通滤波器和a-截尾均值过滤器的叠加效果,即可以保证图像不是非常模糊,也可以保留图像边缘信息。
而人脸磨皮原理的步骤分为如下3个步骤:
因为,不管上面3种滤波如何,都会导致一定的模糊(只是相对来说谁更优而已),所以需要对图像进行融合与锐化的操作。这样,可以保留一些图像的细节,以增强图像的真实感。
其中,图像融合使用的函数就是cv2.addWeighted()图像加权函数。融合的是原图与双通滤波后的图像。
最后,图像锐化使用的PIL库进行操作,使用它的ImageEnhance.Sharpness()函数自动调节图像的锐度与对比度。
既然我们已经完全掌握了人脸磨皮的原理。下面,我们来直接实现人脸的磨皮效果,具体的代码如下所示:
# 人脸磨皮 def facial_dermabrasion_effect(fileName): img = cv2.imread(fileName) blur_img = cv2.bilateralFilter(img, 31, 75, 75) #图像融合 result_img = cv2.addWeighted(img, 0.3, blur_img, 0.7, 0) cv2.imwrite("58_1.jpg", result_img) image = Image.open("58_1.jpg") # 锐度调节 enh_img = ImageEnhance.Sharpness(image) image_sharped = enh_img.enhance(1.5) # 对比度调节 con_img = ImageEnhance.Contrast(image_sharped) image_con = con_img.enhance(1.15) image_con.save("58_2.jpg") img1 = cv2.imread("58.jpg") img2 = cv2.imread("58_2.jpg") cv2.imshow("1", img1) cv2.imshow("2", img2) cv2.waitKey() cv2.destroyAllWindows() if __name__ == "__main__": facial_dermabrasion_effect("58.jpg")
运行之后,效果如下:
这段代码的参数都是可以调整的,并不是一层不变的,感兴趣的读者可以自己调节参数试试效果,当然人脸磨皮只是看起来皮肤光滑了。下面结合美白的效果,就可以实现相机的那种美颜。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
人脸磨皮是最基础的人脸美颜效果。本文介绍了OpenCV-Python实现人脸磨皮算法,主要包括图像滤波,图像融合和图像锐化,感兴趣的可以了解一下
Google发布了新的TensorFlow物体检测API,包含了预训练模型,一个发布模型的jupyter notebook,一些可用于使用自己数据集对模型进行重新训
这篇文章主要为大家介绍了python skimage图像处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要介绍了python实战之利用pygame实现贪吃蛇游戏,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助哟,需要的朋友可以参考下
在实际的工作中,我们经常会有这样的需求,一些功能需要执行,但是又可以不马上执行,这时候就可以使用延迟加载执行了。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008