文章目录
- [1.OpenCV 介绍](#1.OpenCV 介绍)
- [1.1 OpenCV 的特点](#1.1 OpenCV 的特点)
-
- [1.2 OpenCV 的主要模块](#1.2 OpenCV 的主要模块)
- [1.3 OpenCV 的应用场景](#1.3 OpenCV 的应用场景)
- [2.OpenCV-Python 库](#2.OpenCV-Python 库)
- [3.OpenCV 安装](#3.OpenCV 安装)
1.OpenCV 介绍
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它由英特尔公司于1999年首次发布,旨在为实时计算机视觉应用提供一个高效的工具集。OpenCV被广泛应用于各种领域,包括图像处理、视频分析、物体识别、机器学习等。
1.1 OpenCV 的特点
- 跨平台支持:OpenCV支持多个操作系统,包括Windows、Linux、macOS、Android和iOS。
- 多语言接口:除了C++,OpenCV还提供了Python、Java和MATLAB等多种编程语言的接口。
- 丰富的功能:OpenCV包含了超过2500个优化的算法,涵盖了从基本的图像处理到复杂的机器学习模型。
- 高效性:OpenCV的许多核心功能都经过高度优化,能够在实时应用中高效运行。
- 社区支持:作为一个开源项目,OpenCV拥有一个活跃的开发者和用户社区,提供了丰富的文档和教程。
1.2 OpenCV 的主要模块
OpenCV库被分为多个模块,每个模块都提供特定的功能:
- 核心模块(core):提供基本的数据结构和算法,如矩阵操作、随机数生成等。
- 图像处理模块(imgproc):包含各种图像处理算法,如滤波、边缘检测、形态学操作等。
- 视频分析模块(video):提供运动检测、对象跟踪等功能。
- 相机校准和3D重建模块(calib3d):用于相机标定、立体视觉等。
- 特征检测和描述模块(features2d):提供各种特征检测和描述算法,如SIFT、SURF、ORB等。
- 对象检测模块(objdetect):包含人脸检测、行人检测等预训练模型。
- 机器学习模块(ml):提供各种机器学习算法,如KNN、SVM、决策树等。
- 图形用户界面模块(highgui):提供简单的图形用户界面功能,用于显示图像和视频。
1.3 OpenCV 的应用场景
- 图像处理:如图像增强、去噪、滤波、边缘检测等。
- 视频分析:如运动检测、对象跟踪、视频稳定等。
- 对象识别:如人脸识别、车牌识别、手势识别等。
- 机器学习:如图像分类、对象检测、特征提取等。
- 增强现实(AR):如相机标定、姿态估计、3D重建等。
OpenCV是一个功能强大且广泛应用的计算机视觉库,适用于从学术研究到工业应用的各种场景。它的跨平台支持、多语言接口和丰富的功能使其成为计算机视觉领域的首选工具之一。
2.OpenCV-Python 库
OpenCV-Python 是 OpenCV 库的 Python 绑定,它使得 Python 开发者能够方便地使用 OpenCV 提供的各种计算机视觉和图像处理功能。OpenCV-Python 结合了 OpenCV 的强大功能和 Python 的简洁易用,使得图像处理和计算机视觉的开发变得更加高效和便捷。
OpenCV-Python 的特点
- 易于使用:Python 语言本身简洁易懂,结合 OpenCV 的强大功能,使得图像处理和计算机视觉的开发变得更加简单。
- 跨平台支持:OpenCV-Python支 持多个操作系统,包括Windows、Linux、macOS、Android 和 iOS。
- 丰富的功能:OpenCV-Python 提供了 OpenCV 库中的所有功能,包括图像处理、视频分析、对象检测、机器学习等。
- 社区支持:OpenCV-Python 拥有一个活跃的开发者和用户社区,提供了丰富的文档、教程和示例代码。
3.OpenCV 安装
安装OpenCV之前需要先安装numpy,matplotlib。
- 安装
numpy
,matplotlib
库;
bash
pip install numpy matplotlib
- 安装
opencv-python
库;
bash
pip install opencv-python
- 如果我们要利用
SIFT
和SURF
等进行特征提取时,还需要安装:
bash
pip install opencv-contrib-python
4.验证是否安装成功;
python
import cv2
# 读取图像
image = cv2.imread('iu.jpg') #改为你自己的图片路径
# 显示图像
cv2.imshow('iu', image)
# 等待按键事件
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()