这是可以学的吗?如何用Python把皮展开

对于磨皮这种复杂的图像处理,用scipy这种科学计算包显然会比较复杂,故而使用神器opencv

pip install opencv-python

磨皮的本质就是将表面变得模糊,然而直接使用模糊会让轮廓边缘也跟着模糊。故而需要使用双边滤波——一种可以起到保边作用的滤波器,

由于opencv自带图像展示的窗口,所以不用导入其他绘图包。首先,打开一张图片

import numpy as np
import cv2

img = cv2.imread("dip.jpg")
cv2.imshow("test",img)

如图所示

这是可以学的吗?如何用Python把皮展开_第1张图片

首先,对图像进行双边滤波

#双边滤波,三个参数分别是
biImg = cv2.bilateralFilter(img,50,50,50)
ck = np.append(img,biIimg,axis=1)       #拼接处理前后的图像,用于对比
cv2.imshow("comparison",ck)

对比如下,可见已经产生了一点效果,皮肤明显变好了,仿佛打了羊胎素。

这是可以学的吗?如何用Python把皮展开_第2张图片

其中,bilateralFilter即opencv中的双边滤波函数,其在Gauss滤波的基础上,添加了与边缘相关的权重因素。故而,可以将双边滤波理解阈值查找边缘+为Gauss滤波。在查找边缘之后,对非边缘区域使用Gauss滤波,而越像边缘的地方,就越降低Gauss滤波的权重。故而,其输入参数除了img为待处理的图像外,之后三个分别表示滤波半径、高斯滤波函数的标准差、阈值函数标准差。

你可能感兴趣的:(Python艺术,python,计算机视觉,opencv,双边滤波)