📜  opencv铅笔素描效果——随便(1)

📅  最后修改于: 2023-12-03 15:33:18.111000             🧑  作者: Mango

OpenCV 铅笔素描效果——随便

OpenCV 是一个流行的计算机视觉库,它可以用于处理和分析图像。本文将介绍如何使用 OpenCV 实现铅笔素描效果。

安装

在开始之前,需要安装 OpenCV。安装过程取决于您所使用的操作系统和开发环境,具体步骤可以参考 OpenCV 官方文档。

实现步骤
  1. 加载图像

要实现铅笔素描效果,首先需要加载图像。可以使用 OpenCV 的 imread 函数来加载图像。此函数需要传入图像的文件名和标志,以指示应如何加载图像。

import cv2

# load image
img = cv2.imread('image.jpg')
  1. 灰度转换

铅笔素描效果需要一张黑白图像。因此,需要将图像转换为灰度图像。可以使用 OpenCV 的 cvtColor 函数来将彩色图像转换为灰度图像。

# convert to grayscale
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  1. 高斯模糊

为了使铅笔素描效果更加真实,可以添加一些模糊效果。高斯模糊是一种流行的模糊技术,可以使用 OpenCV 的 GaussianBlur 函数来实现。

# apply Gaussian blur
blurred_img = cv2.GaussianBlur(gray_img, (15, 15), 0)
  1. 边缘检测

铅笔素描效果的主要特征是边缘。要检测图像中的边缘,可以使用 Canny 边缘检测算法。 OpenCV 的 Canny 函数可以轻松地实现边缘检测。

# apply edge detection
edged_img = cv2.Canny(blurred_img, 30, 150)
  1. 二值化

在边缘检测之后,需要将图像转换为二值图像。可以使用 threshold 函数将图像中的灰度值转换为二进制值。

# apply thresholding
thresh = cv2.threshold(edged_img, 200, 255, cv2.THRESH_BINARY_INV)[1]
  1. 膨胀

在二值化之后,可以对图像中的边缘进行膨胀。膨胀会增加边缘的厚度,这对于铅笔素描效果来说非常有用。可以使用 dilate 函数对图像进行膨胀。

# apply dilation
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
dilated = cv2.dilate(thresh, kernel, iterations=1)
  1. 输出图像

现在已经得到了铅笔素描效果的图像。可以使用 OpenCV 的 imwrite 函数将图像保存到文件中。

# write output image
cv2.imwrite('output.jpg', dilated)
完整代码
import cv2

# load image
img = cv2.imread('image.jpg')

# convert to grayscale
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# apply Gaussian blur
blurred_img = cv2.GaussianBlur(gray_img, (15, 15), 0)

# apply edge detection
edged_img = cv2.Canny(blurred_img, 30, 150)

# apply thresholding
thresh = cv2.threshold(edged_img, 200, 255, cv2.THRESH_BINARY_INV)[1]

# apply dilation
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
dilated = cv2.dilate(thresh, kernel, iterations=1)

# write output image
cv2.imwrite('output.jpg', dilated)
结论

通过以上步骤,您现在已经可以使用 OpenCV 来实现铅笔素描效果。使用上述代码,可以轻松地将图像转换为铅笔素描效果,并保存输出图像。