OpenCV
概述
参考:
Open Source Computer Vision Library(开源计算机视觉库,简称 OpenCV) 是一个包含数百种计算机视觉算法的开源库。
各语言的库
官方提供了 Python、C++ 的 OpenCV 库
go https://github.com/hybridgroup/gocv
Modules(模块)
参考:
OpenCV 具有模块化的结构,整个 OpenCV 的功能由一个个模块提供,每个模块具有自己的类、函数、方法,并且可以多个模块共享使用。这种模块化的结构可以让 OpenCV 像一门编程语言一样,具有自己的标准库和第三方库,标准库中的标准模块可以实现自身的核心功能,第三方库的模块可以基于核心功能扩展其他功能。就像 https://pkg.go.dev/ 中的各种包,可以看到类型、方法、函数等等的描述。
所有 OpenCV 的类和函数都放在 cv Namespace 中(Namespace 是 C++ 编程语言的基本概念),如果我们要使用 C++ 代码调用 OpenCV 的模块,需要使用 cv::
或在头部添加 using namespace cv;
指令。
模块分为两类:
- Main Modules(主模块)
- Extra Modules(额外模块)
Main Modules(主模块)
- core # 核心功能模块,全称 Core functionality 。定义了基本的数据结构,包括最重要的 Mat 类、XML 读写、opengl三维渲染等。
- imgproc # 图像处理模块,全称 Image processing。包括图像滤波、集合图像变换、直方图计算、形状描述、物体检测、等等。图像处理是计算机视觉的重要工具。
- imgcodecs # 图像文件读写模块,全称 Image file reading and writing。
- videoio # 视频文件读写模块,全称 Video I/O。也包括摄像头、Kinect 等的输入。
- highgui # 高级图形界面及与 QT 框架的整合。
- video # 视频分析模块。包括背景提取、光流跟踪、卡尔曼滤波等,做视频监控的读者会经常使用这个模块。
- calib3d. Camera Calibration and 3D Reconstruction
- features2d. 2D Features Framework
- objdetect. Object Detection
- dnn. Deep Neural Network module
- ml. Machine Learning
- flann. Clustering and Search in Multi-Dimensional Spaces
- photo. Computational Photography
- stitching. Images stitching
- gapi. Graph API
Extra Modules(额外模块)
- alphamat. Alpha Matting
- aruco. Aruco markers, module functionality was moved to objdetect module
- barcode. Barcode detecting and decoding methods
- bgsegm. Improved Background-Foreground Segmentation Methods
- bioinspired. Biologically inspired vision models and derivated tools
- ccalib. Custom Calibration Pattern for 3D reconstruction
- cudaarithm. Operations on Matrices
- cudabgsegm. Background Segmentation
- cudacodec. Video Encoding/Decoding
- cudafeatures2d. Feature Detection and Description
- cudafilters. Image Filtering
- cudaimgproc. Image Processing
- cudalegacy. Legacy support
- cudaobjdetect. Object Detection
- cudaoptflow. Optical Flow
- cudastereo. Stereo Correspondence
- cudawarping. Image Warping
- cudev. Device layer
- cvv. GUI for Interactive Visual Debugging of Computer Vision Programs
- datasets. Framework for working with different datasets
- dnn_objdetect. DNN used for object detection
- dnn_superres. DNN used for super resolution
- dpm. Deformable Part-based Models
- face. Face Analysis
- freetype. Drawing UTF-8 strings with freetype/harfbuzz
- fuzzy. Image processing based on fuzzy mathematics
- hdf. Hierarchical Data Format I/O routines
- hfs. Hierarchical Feature Selection for Efficient Image Segmentation
- img_hash. The module brings implementations of different image hashing algorithms.
- intensity_transform. The module brings implementations of intensity transformation algorithms to adjust image contrast.
- julia. Julia bindings for OpenCV
- line_descriptor. Binary descriptors for lines extracted from an image
- mcc. Macbeth Chart module
- optflow. Optical Flow Algorithms
- ovis. OGRE 3D Visualiser
- phase_unwrapping. Phase Unwrapping API
- plot. Plot function for Mat data
- quality. Image Quality Analysis (IQA) API
- rapid. silhouette based 3D object tracking
- reg. Image Registration
- rgbd. RGB-Depth Processing
- saliency. Saliency API
- sfm. Structure From Motion
- shape. Shape Distance and Matching
- stereo. Stereo Correspondance Algorithms
- structured_light. Structured Light API
- superres. Super Resolution
- surface_matching. Surface Matching
- text. Scene Text Detection and Recognition
- tracking. Tracking API
- videostab. Video Stabilization
- viz. 3D Visualizer
- wechat_qrcode. WeChat QR code detector for detecting and parsing QR code.
- xfeatures2d. Extra 2D Features Framework
- ximgproc. Extended Image Processing
- xobjdetect. Extended object detection
- xphoto. Additional photo processing algorithms
核心功能模块
参考
Mat 类
Mat 类记录在 “核心功能模块 - 基本结构” 中。
当我们使用 OpenCV 打开一张图片时,就是实例化了一个 Mat 类,这个类的本质是一个 N-dimensional dense array class(N维密集数组类)。说白了就是将图像转为由纯数字表示的形式。任何对图像的处理,其实就是数学计算。
Mat 类可存储实数或复值向量和矩阵、灰度或彩色图像、体素体积、向量场、点云、张量、直方图(不过,非常高维的直方图可能更好地存储在 SparseMat 中)。
对于图像处理来说,实例化一个 Mat 对象,是一切的基础。
图像文件读写模块
imread() 函数
从文件中读取图像,返回一个 Mat 实例
imwrite() 函数
保存图像到指定的文件中。
Video I/O 模块
使用 OpenCV 读写视频或图像序列。
VideoCapture 类
用于从视频文件、图像序列或摄像头中捕获视频的类。当我们打开一个视频或一个捕获设备时,就是实例化一个 VideoCapture。
get() # 获取指定的 VideoCapture 属性
set() # 设置指定的 VideoCapture 属性
read() # 抓取、解码并返回下一个视频帧。
release() # 关闭视频文件或捕获设备(比如摄像头)
VideoWriter 类
视频写入器的类
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.