OpenCV 简介
Opencv 库由 C 和 C++ 语言编写,涵盖计算机视觉各个领域内的 2500 多个函数,可以在多种操作系统上运行。其旨在提供一个简洁而又高效的接口,从而帮助开发人员快速地构建视觉应用。
Opencv 由 Intel 开发,是世界上最大、最著名的计算机视觉图像库。很多做计算机视觉的商业公司,都是在他的基础上做出的商业解决方案。而 Opencv ,更像是一个黑盒,让我们专注于视觉应用的开发,而不必过多关注基础图像处理的具体细节。
Opencv 能干什么?
答:目标识别(人脸识别、车辆识别、物体分类)、自动驾驶(车道检测、自动驾驶、车道保持等等)、医学图像分析、视频内容理解(可理解非结构化数据)。
Python OpenCV 库下载
# FOR ANACONDA PROMPT
pip install opencv-python
Python 中使用 Opencv:
import cv2
# 注意是cv2而不是opencv
图像处理基础
在图像处理过程中,包含:读取图像、显示图像、保存图像 这三个最基本的操作。本文剩余部分将简单的介绍实现这三个操作,后续博文将做详细介绍。
读取图像
OpenCV 提供函数 cv2.imread()
来读取图像;
该函数的一般形式如下:
image_arr = cv2.imread(filename, flags)
filename
:要读取的图像文件路径;flags
:可选参数,用于指定如何读取图像:cv2.IMREAD_COLOR
:默认值,读取 RGB 三通道图像;cv2.IMREAD_GRAYSCALE
:读取图像,并调整为单通道的灰度图像;cv2.IMREAD_UNCHANGED
:读取图像,保持原始所有通道信息;
读取图像后,该图像将以数字矩阵的形式保存在内存中的 image_arr
变量中。这个数字矩阵包含了图像的像素信息,可以进行各种图像处理和分析操作,如后续博文将会讲到的图像转换、滤波、边缘检测等。
e . g . e.g. e.g. 读取一张图像以及其灰度图矩阵信息;
import cv2
image_arr_1 = cv2.imread("universe.jpg")
image_arr_2 = cv2.imread("universe.jpg", cv2.IMREAD_GRAYSCALE)
print("原图矩阵为:", image_arr_1)
print("灰度图矩阵为:", image_arr_2)
显示图像
在完成图像处理操作后,如果你想展示图像的样子,可以使用 OpenCV 提供的 imshow()
函数。这个函数会显示一个窗口,其中包含了处理后的图像。
import cv2
# 读取图像
image_arr = cv2.imread('universe.jpg', cv2.IMREAD_UNCHANGED)
# 展示图像
cv2.imshow('Image Of Universe', image_arr)
# 等待用户输入,0 表示永久等待
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
保存图像
OpenCV 使用 imwrite()
函数可以实现图像的保存。该函数接收四个参数:输入图像、保存的文件路径、图像的编码方式以及图像的质量分数(可选)。
e . g . e.g. e.g. 以下是使用 Python 进行图像保存的示例代码:
import cv2
# 读取图像
img = cv2.imread('universe.jpg')
# 设置保存图像的路径、编码方式以及质量分数(可选)
save_path = 'output.jpg'
encodeing = cv2.IMREAD_COLOR # 图像编码方式,可选CV2_IMREAD_GRAYSCALE为灰度图像
quality = 95 # 图像质量分数,可选,默认为95
# 保存图像
cv2.imwrite(save_path, img, encodeing, quality)