参考:https://blog.csdn.net/yangtrees/article/details/9115321
一、效果:
二、算法及代码:
from PIL import Image, ImageFilter, ImageOps
img = Image.open('D:/Code/python/Data/girl.jpg')
# (1) 图片转换成灰色
img_gray = img.convert('L')
# (2) 将输入图像转换为反色图像,即黑白颠倒
img_gray2 = img_gray.copy()
img_invert = ImageOps.invert(img_gray2)
# (3) 模糊
img_blur = img_invert.filter(ImageFilter.BLUR) # ImageFilter.BLUR为模糊滤波,处理之后的图像会整体变得模糊。
# (4) 生成素描图img_gray2
row, col = img_blur.size
for i in range(row):
for j in range(col):
original_pixel = img_gray.getpixel((i, j))
blur_pixel = img_blur.getpixel((i, j))
new_value = min(int(original_pixel*255/(256-blur_pixel*1.0)), 255) # 利用原图和blur图
img_gray2.putpixel((i, j), new_value)
img_gray2.show()
关键代码:new_value = min(int(original_pixel*255/(256-blur_pixel*1.0)), 255) # 利用原图和blur图
三、中间结果:
img_gray灰度图:
img_invert:
img_blur: