点赞 + 关注 + 收藏 = 学会了
OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理、机器学习和实时计算机视觉应用。比如图像和视频的滤镜和降噪、物体检测、人脸识别、证件号识别、车牌识别等应用。当然,也有其他工具可以对这些领域做支持,但本专栏是介绍 OpenCV 的,所以只讲 OpenCV 的好话。
OpenCV 对「数字图像」提供了很多种功能函数,图像是由像素组成,而每个像素包含了颜色、亮度、饱和度等信息,这些信息在计算机中都是以数据的方式保存(通常是各种类型的数字),OpenCV 很擅长操作和处理这些数据。
在处理这些数据之前需要先有数据。本文作为 「OpenCV-Python 专栏」的门口篇,将介绍如何安装 OpenCV 以及如何读取、显示、保存图片。
OpenCV 支持多种编程语言,如 Python、C++ 等,它还对 JavaScript 做了支持。
本专栏讲解 OpenCV Python 版本的用法,之后有机会可能还会讲解 JavaScript 版本的用法及应用。
- OpenCV官网:https://opencv.org/
- OpenCV Python 官方文档:https://docs.opencv.org/4.1.2/d6/d00/tutorial_py_root.html
安装并引入
安装
在开始使用 OpenCV 前,需要安装好 Python 环境。可参考 Python 快速入门篇
然后安装 OpenCV。
pip install opencv-python
安装成功后可以用 python -c "import cv2; print(cv2.__version__)"
验证安装是否成功。如果输出了 OpenCV 的版本号就证明安装成功了。
引入
创建一个项目目录,在里面创建一个 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()
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 的重点,但这几个方法在之后会经常用到。要记住了。
点赞 + 关注 + 收藏 = 学会了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。