1. 磐创AI首页
  2. Medium

图像处理:使用Python从图像创建铅笔草图

如果我告诉你,你可以在10分钟内成为素描画家。嗯,我不是在取笑真正的素描艺术家,他们用铅笔和纸画图像。但是在图像处理的帮助下,您实际上可以用几行python代码来制作任何照片的草图图像。您只需要对Python有一个基本的了解。那么,让我们开始画素描吧。在笔记本电脑上打开Jupyter Notebook或Google Colab,而不是纸和笔。

将图像转换为草图

嗯,图像到草图的转换完全取决于你检测图像边缘的精确度。这完全取决于你,你能不能很好地检测到图像的边缘。几乎没有可用的算法可以帮助您检测边缘。

素描技术通常是通过模糊图像的边缘并在一定程度上去除图像的细节来实现的。不同的图像处理算法在这里的工作原理是不同的。在本文中,我们将使用OpenCV-Python的pencilSketch()和syliization()算法。这相当简单。

我通常用Google Colab编写和运行代码。您可以在此处访问Google Colab中的完整代码。

我们将经历以下主要步骤:

步骤1:

import cv2
import matplotlib.pylab as plt
from google.colab.patches import cv2_imshow
from google.colab import files

步骤2:

def read_file(filename):
image = cv2.imread(filename)
cv2_imshow(image)
return image

如果您使用的是Jupyter笔记本,则不必使用这些代码行。只需添加图像的路径即可。但是,如果您在Google Colab中使用它,那么运行上面的代码并上传您选择的图像。

步骤3:

dst_sketch, dst_color_sketch = cv2.pencilSketch(image, sigma_s=50, sigma_r=0.07, shade_factor=0.08)
dst_water_color = cv2.stylization(image, sigma_s=50, sigma_r=0.0825)

在这一步中,算法自动检测图像的边缘。但是,您可以对其进行自定义。我使用算法的最小功能来获得好的输出图像。如果你愿意,你可以探索更多。

步骤4:

plt.figure(figsize=(20,14))
plt.subplot(221), plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)), plt.axis('off'), plt.title('Original Image', size=20)
plt.subplot(222), plt.imshow(dst_sketch, cmap='gray'), plt.axis('off'), plt.title('Pencil-Sketch', size=20)
plt.show()

运行这间牢房,看看它的魔力。您可以在步骤3中自定义sigma_s、sigma_r和shade_factor的值。我使用上面的程序将我的一张图像转换为草图图像。看一看。

这是图像的简单铅笔素描。您也可以使用下面的代码尝试彩色铅笔草图和风格化颜色草图。

plt.figure(figsize=(20,14))
plt.subplot(221), plt.imshow(cv2.cvtColor(dst_color_sketch, cv2.COLOR_BGR2RGB)), plt.axis('off'), plt.title('Color-Pencil-Sketch', size=20)
plt.subplot(222), plt.imshow(cv2.cvtColor(dst_water_color, cv2.COLOR_BGR2RGB)), plt.axis('off'), plt.title('Stylized-Color', size=20)
plt.show()


输出很酷。难到不是么?

嗯,我把几个大学同学在Instagram上的照片转换成了素描。看一看。InstagramInstagram

感谢阅读!!,如果这篇文章对你有帮助,那就拍到你的手流血。

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/21/%e5%9b%be%e5%83%8f%e5%a4%84%e7%90%86%ef%bc%9a%e4%bd%bf%e7%94%a8python%e4%bb%8e%e5%9b%be%e5%83%8f%e5%88%9b%e5%bb%ba%e9%93%85%e7%ac%94%e8%8d%89%e5%9b%be-2/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息