点赞 + 关注 + 收藏 = 学会了

OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理、机器学习和实时计算机视觉应用。比如图像和视频的滤镜和降噪、物体检测、人脸识别、证件号识别、车牌识别等应用。当然,也有其他工具可以对这些领域做支持,但本专栏是介绍 OpenCV 的,所以只讲 OpenCV 的好话。

OpenCV 对「数字图像」提供了很多种功能函数,图像是由像素组成,而每个像素包含了颜色、亮度、饱和度等信息,这些信息在计算机中都是以数据的方式保存(通常是各种类型的数字),OpenCV 很擅长操作和处理这些数据。

在处理这些数据之前需要先有数据。本文作为 「OpenCV-Python 专栏」的门口篇,将介绍如何安装 OpenCV 以及如何读取、显示、保存图片。

OpenCV 支持多种编程语言,如 Python、C++ 等,它还对 JavaScript 做了支持。

本专栏讲解 OpenCV Python 版本的用法,之后有机会可能还会讲解 JavaScript 版本的用法及应用。

安装并引入

安装

在开始使用 OpenCV 前,需要安装好 Python 环境。可参考 Python 快速入门篇

然后安装 OpenCV。

pip install opencv-python

安装成功后可以用 python -c "import cv2; print(cv2.__version__)" 验证安装是否成功。如果输出了 OpenCV 的版本号就证明安装成功了。

01.png

引入

创建一个项目目录,在里面创建一个 main.py 文件,打开该文件,写入以下代码就可以引入 OpenCV 了。

import cv2

读取图片

读取图片是图像处理的第一步。在 OpenCV 中,cv2.imread() 函数用于读取图像文件。

import cv2

# 读取图片
image = cv2.imread('example.png')

上面的代码,使用 cv2.imread() 读取了一张图片,并将该图片存在 image 变量里。

cv2.imread() 接收2个参数:

  • 参数1: 本地图片的文件路径。不能直接读取网络上的图片。要读取网络图片,可以使用 requests 库下载图片并将其转换为 OpenCV 能识别的格式。
  • 参数2:图片读取的模式,支持以下参数。

    • cv2.IMREAD_COLOR:以彩色图像读取,忽略透明度(默认)。
    • cv2.IMREAD_GRAYSCALE:以灰度图像读取。
    • cv2.IMREAD_UNCHANGED:读取包含透明通道的图像。

显示图片

Python 不像 JS 那样可以直接在浏览器运行,用 JS 版的 OpenCV 可以直接将图片渲染到浏览器页面里,而 Python 版需要使用 cv2.imshow() 方法创建一个窗口,然后把图片丢进去显示,并且需要通过 cv2.waitKey() 方法让窗口保持打开状态。

# 显示图片
cv2.imshow('Image', image)

# 等待用户按任意键关闭窗口
cv2.waitKey(0)

# 关闭所有窗口释放资源
cv2.destroyAllWindows()

02.png

cv2.imshow() 函数的两个参数:

  • 参数1:是窗口名称。
  • 参数2:是要显示的图像。

「窗口名称」值得是这个图片窗口的名称,在上图中图片顶部的状态栏里有显示这个名字。

在 OpenCV 中,一个窗口能展示一个图片,如果将多个图片有序的放进同一个窗口就会形成动画,之后介绍视频的时候会提到这点。

只使用 cv2.imshow() 展示图片只能保留一瞬间的展示时间,如果想长时间维持展示状态可以使用 cv2.waitKey(0) 让程序停止下来,这样就不会关掉图片窗口了。

cv2.waitKey() 会等待并返回用户按下键盘上的任意键,窗口才会继续运行或关闭。参数 0 表示无限等待,直到用户按下键盘任意键才会继续执行代码。你也可以传入其他数值,比如传入 30 表示等待 30毫米 才执行下一步操作。

最后执行 cv2.destroyAllWindows() 关闭所有窗口,释放资源。

OpenCV 的操作对象是图片,以后学到更高阶的方法时经常需要使用 cv2.imshow() 将图片输出来看看,这其实有点像我们在控制台查看日志的功能。所以 cv2.imshow() 方法一定要记住。

保存图片

在图像处理结束后(比如修改图片尺寸、加个滤镜等操作,后面的文章会讲到),可以使用 cv2.imwrite() 将处理结果保存为文件。

# 保存图片
cv2.imwrite('output.jpg', image)

cv2.imwrite() 函数接受两个参数:

  • 参数1:保存的文件路径。
  • 参数2:要保存的图像数据。

以上就是本文的全部内容了,虽然还没讲到 OpenCV 的重点,但这几个方法在之后会经常用到。要记住了。

点赞 + 关注 + 收藏 = 学会了


德育处主任
178 声望17 粉丝