“港星一代人的记忆!”
“在这个数字化时代,人们对于照片的需求越来越多样化,不再满足于普通的彩色照片。相比于传统的彩色照片,黑白素描照片更具有艺术感和情感表达的效果。本文将向您展示如何使用Python编写一个简单的图像处理代码,将彩色照片转换为黑白素描效果。”


原理
首先将图像转化为灰度图,然后使用高斯滤镜效果,后通过按位取反、图像除法等操作,将图像变成了一幅素描画。
模块安装
pip install opencv-python
代码
import cv2def 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'C:\Users\min.wang\Desktop\11.jpg'after_path = r'C:\Users\min.wang\Desktop\22.jpg'make_sketch(before_path, after_path)
代码实现的主要步骤如下:
首先,我们使用cv2.imread()函数读取一张彩色照片,并保存在img变量中
然后,我们使用cv2.cvtColor()函数将彩色照片转换为灰度图像,保存在grey变量中
接着,我们使用cv2.bitwise_not()函数对灰度图像进行反转,保存在invert变量中
接下来,我们使用cv2.GaussianBlur()函数对反转后的图像进行高斯模糊处理,保存在blur_img变量中
然后,我们再次使用cv2.bitwise_not()函数对模糊图像进行反转,保存在inverse_blur变量中
最后,我们使用cv2.divide()函数将原始灰度图像与反转的模糊图像进行除法运算,通过调整scale参数来控制效果的强度,并将结果保存为素描图像
最后,我们使用cv2.imwrite()函数将素描图像保存为girl.jpg文件,并使用cv2.destroyAllWindows()函数关闭所有打开的窗口
篇外
以前一直想学习素描,高中时候有同学学习美术,看到他们画的素描图就很喜欢。但是学美术的补习费也是很感人,一个月几千,零几年的时候,感觉好贵。

