这是我参与更文挑战的第26天,活动详情查看: 更文挑战
OpenCV
是一个C++
库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python
中常使用OpenCV
库实现图像处理。
本文将介绍如何在Python3
中使用OpenCV
实现将图片转化为素描图。
前文
在Opencv
中一张RGB
颜色的图像经过下面四个步骤就能够生成出一张素描图:
- 1.将
RGB
图转化为灰度图。 - 2.灰度图进行反色操作。
- 3.对步骤2中的图片进行高斯模糊
Gaussian blur
。 - 4.将步骤1中的灰度图像和步骤三中的模糊反色图像混合,这里就用到亮化(
Dodging
)和暗化(burning
)的技术。
实现过程
原图
Step 1: 将图像转化为灰度图
实现代码:
import cv2
img_rgb = cv2.imread('example.jpg')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
cv2.imshow('original', img_gray)
cv2.waitKey(0)
输出为:
Step 2: 灰度反色操作
实现代码:
img_gray_inv = 255 - img_gray
输出为:
Step 3: 高斯模糊
Gaussian blur
能够很有效地减少图像中的噪声,能够将图像变得更加平滑一点,在数学上等价于用高斯核来对图像进行卷积操作。
实现代码:
img_blur = cv2.GaussianBlur(img_gray_inv, ksize=(21, 21), sigmaX=0, sigmaY=0)
输出为:
Step 4: 灰度图与高斯模糊底片的融合
实现代码:
tmp = (image[col, row] << 8) / (255 - mask)
输出为:
本月将陆续推出相关系列文章,
篇篇精彩,尽请关注。