问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用OpenCV创建图像素描(10行代码)

创作时间:
作者:
@小白创作中心

使用OpenCV创建图像素描(10行代码)

引用
CSDN
1.
https://blog.csdn.net/Iconicdusk/article/details/136521116

引言

你有没有想过用计算机语言来制作一幅图像的粗略素描?
在这篇文章中,我们将向你展示如何在没有任何编程技能的情况下制作一幅图像的素描。请坐稳并拿出你的笔,因为这将是一次启发性和全面性的体验。
注意:要跟随本指南,你只需要对计算机如何工作有基本的了解。
如果你对尝试这个感到好奇,下面是10行代码👇

import cv2
path = r'C:\Users\folksconnect\Pictures\2020-07'
image_path = cv2.imread(path)
grey_image = cv2.cvtColor(image_path,  cv2.COLOR_BGR2GRAY)
cv2.imshow('Image', grey_image)
invert = cv2.bitwise_not(grey_img)
blur = cv2.GaussianBlur(invert, (30, 30), cv2.BORDER_DEFAULT)
invertedblur = cv2.bitwise_not(blur)
sketch = cv2.divide(grey_img, invertedblur, scale =256.0)
cv2.imwrite('sketch.png', sketch)

但如果你不急于开始,本文将解释在使用OpenCV创建图像素描时你需要知道的一切。

什么是OpenCV?

OpenCV是一个庞大的开源库,用于计算机视觉、机器学习和图像处理,在目前的实时操作中发挥着重要作用,这些操作对于当今的系统至关重要。它能够在照片和视频中识别对象、人物甚至是人类的手写笔迹。
总结一下,在本指南中,我们将使用OpenCV来处理照片,即创建图像素描。

什么是Python?

Python是一种广泛用于构建网站和应用程序、自动化任务和数据分析的编程语言。Python是一种通用编程语言,这意味着它可以用来创建各种各样的应用程序,并不专门用于任何特定的问题。
为了能够使用OpenCV进行图像处理,我们必须在Python编程语言中导入它,但在我们开始编码之前,让我们先设置好我们的环境,以便高效地工作。

  1. 设置你的Python环境
    首先要做的事情是确保你的电脑(PC)上有Python解释器,否则这里有一个链接,在你的Windows PC和MacOS上安装Python。
  2. 设置OpenCV环境
    成功在电脑上安装Python之后,下一步是在你的PC上安装OpenCV库。
    要安装OpenCV,请在电脑上启动命令提示符并运行这个命令。
pip install opencv-python

在输入此命令时,请确保你的电脑连接了互联网,因为它将从互联网下载。一旦成功下载后,你现在可以启动安装在你电脑上的Python空闲(idle)界面。只需在电脑(PC)的搜索栏中输入python idle。

实现我们的代码

注意:在赋值符号(=)左侧的任何文本(变量)用于存储信息,右侧的语句(代码)存储到左侧。
在运行我们的空闲(idle)后的第一步是创建一个新的Python脚本文件。这可以通过输入
Ctrl + N
快捷键完成,这将创建一个新文件。

  • 第二步是编写语句
import cv2

这行代码将OpenCV库导入到你的Python代码中,这样你就可以获得它执行的所有操作的功能。
下一步是将图像的路径赋值给变量
path
,并在字符串(path)的前面添加
r
。以下是一个示例:

path = r'C:\Users\folksconnect\Pictures\2020-07'
  • 下一代码行:
image_path = cv2.imread(path)

这行代码的作用是:它读取您输入的图片路径,并将其存储在变量 image_path 中。
注意,如果路径或图片无法读取(可能是因为它不存在或路径中有错误),这个方法会返回一个空矩阵。

  • 接下来要输入的代码行是:
grey_image = cv2.cvtColor(image_path,  cv2.COLOR_BGR2GRAY )

这行代码将您存储在 image_path 中的图片转换成灰色图像。
要显示这张图片,您可以输入以下代码:

cv2.imshow('Image', grey_image)

这段代码会在一个名为 ‘Image’ 的对话框中显示图片。

  • 现在继续下一行代码:
invert = cv2.bitwise_not(grey_img)

这行代码用于反转图像。它会将像素值大于零的像素变为零,反之亦然。例如,一个白色图像会被改变成黑色。
使用增量开发法则,您还可以添加以下这行代码来查看反转后的图像效果:

cv2.imshow('image', invert)

下一步是对图像进行模糊处理,要做到这一点,您可以输入:

blur = cv2.GaussianBlur(invert, (30, 30), cv2.BORDER_DEFAULT)

GaussianBlur()
方法的语法是:

cv2.GaussianBlur(src, ksize, sigmaX, sigmaY, borderType)


GaussianBlur()
方法中,您需要每次都传入
src

ksize
值,以及剩余的 sigmaX、sigmaY 和 borderType 参数中的一个、两个或全部值。
如果您设置了
ksize
(核心大小)值不为 (0,0),那么 sigmaX 和 sigmaY 参数就变成可选的。
src
代表源文件,我们输入的是 invert,因为我们想对 invert 进行处理。
ksize 值总是以元组形式存在 – 即,用括号括起来的值,您可以根据自己的喜好设置任何范围的值。
由于已经设置了 ksize,sigmaX 和 sigmaX 变成了可选项。
borderType 也应该包括在内,但我喜欢使用默认类型,所以您可以传入
cv2.BORDER_DEFAULT

  • 下一行代码是再次反转模糊图像,我们可以通过以下方式实现:
invertedblur = cv2.bitwise_not(blur)
  • 下一行代码是对图像进行除法操作:
sketch = cv2.divide(grey_img, invertedblur, scale=256.0)

现在我们的代码已经完成,最后一步只是将图像写入一个便携式网络图形(PNG)格式,我们可以通过输入以下代码实现:

cv2.imwrite('sketch.png', sketch)

恭喜,我们已经成功创建了一张图片的素描。以下是我们使用 OpenCV 制作的素描示例图片。

这是代码的完整实现,便于访问/使用。

import cv2
path = r'C:\Users\folksconnect\Pictures\2020-07'
image_path = cv2.imread(path)
grey_image = cv2.cvtColor(image_path,  cv2.COLOR_BGR2GRAY)
cv2.imshow('Image', grey_image)
invert = cv2.bitwise_not(grey_img)
blur = cv2.GaussianBlur(invert, (30, 30), cv2.BORDER_DEFAULT)
invertedblur = cv2.bitwise_not(blur)
sketch = cv2.divide(grey_img, invertedblur, scale =256.0)
cv2.imwrite('sketch.png', sketch)

结论

注意:请确保将图片的路径更改为您自己的路径(即您电脑上的路径),因为上述路径是我电脑上一个图片的目录。
在这个指南中,我们使用 Python 中的 OpenCV 构建了一张图片的素描。如果您正确地跟随了这个指南,您应该能够建立自己的这个项目版本,并帮助您探索这个了不起的库的其他酷炫功能,例如人脸识别等等。
您还可以通过添加/实现其他功能和特性来对其进行改进。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号