话不多说,上代码
import cv2
def make_sketch(before_path, after_path):
# 加载图片
img_rgb = cv2.imread(before_path)
# 转为灰度图
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)
# 对图片进行高斯模糊,参数ksize表示高斯核的大小,sigmaX和sigmaY分别表示高斯核在 X 和 Y 方向上的标准差
img_blur = cv2.GaussianBlur(img_gray, ksize=(21, 21), sigmaX=0, sigmaY=0)
# 对原图和模糊图像进行融合,cv2.divide()本质上进行的是两幅图像素级别的除法操作,其得到的结果可以简单理解为两幅图之间有明显差异的部分
divide = cv2.divide(img_gray, img_blur, scale=255)
# 保存结果
cv2.imwrite(after_path, divide)
if __name__ == '__main__':
before_path = r'G:\pictures\ccc.jpg'
after_path = r'G:\pictures\ddd.jpg'
make_sketch(before_path, after_path)
- 参考
https://blog.youkuaiyun.com/cainiao_python/article/details/102656353