当前位置: 首页 > news >正文

OpenCV 基本模块

OpenCV 是一个功能强大的计算机视觉库,包含多个模块,每个模块专注于不同的任务。以下是 OpenCV 中一些核心模块:

模块名称主要功能常用类/函数
Core提供基本数据结构和函数,如图像存储、矩阵操作、文件 I/O 等。MatPointSizeRectScalarFileStoragecv::format
Imgproc图像处理功能,包括滤波、几何变换、颜色空间转换、边缘检测、形态学操作、阈值化等。cvtColorGaussianBlurCannythresholdresizewarpAffine
Highgui图像和视频的显示、窗口管理、用户交互(如鼠标事件、滑动条)。imshownamedWindowwaitKeycreateTrackbarsetMouseCallback
Video视频处理功能,包括视频捕获、背景减除、光流计算等。VideoCaptureVideoWriterBackgroundSubtractorcalcOpticalFlowPyrLK
Calib3d相机标定、3D 重建、姿态估计等。findChessboardCornerscalibrateCamerasolvePnPrecoverPose
Features2d特征检测与描述,包括关键点检测、特征匹配等。ORBSIFTSURFBFMatcherFlannBasedMatcher
Objdetect目标检测功能,如 Haar 级联检测、HOG 检测等。CascadeClassifierHOGDescriptor
DNN深度学习模型的加载和推理,支持 TensorFlow、PyTorch、Caffe 等框架。readNetblobFromImageNet::forward
ML机器学习算法,如 KNN、SVM、决策树等。KNearestSVMDTreesTrainData
Flann快速近似最近邻搜索(FLANN),用于特征匹配和高维数据搜索。IndexKDTreeIndexParamsSearchParams
Photo图像修复、去噪、HDR 成像等。inpaintfastNlMeansDenoisingcreateTonemap
Stitching图像拼接功能,用于创建全景图。StitcherStitcher::create
Shape形状分析和匹配。ShapeDistanceExtractorShapeContextDistanceExtractor
Tracking目标跟踪算法,如 MIL、KCF、GOTURN 等。TrackerMILTrackerKCFTrackerGOTURN
Videoio视频输入输出功能,支持多种视频格式和摄像头。VideoCaptureVideoWriterCAP_PROP_FRAME_WIDTHCAP_PROP_FRAME_HEIGHT
Imgcodecs图像文件的读取和保存,支持多种图像格式。imreadimwriteimdecodeimencode
Xfeatures2d额外的特征检测与描述算法,如 SIFT、SURF、FREAK 等。SIFTSURFFREAKDAISY
Superres超分辨率图像处理。SuperResolutionDenseOpticalFlowExt
Optflow光流计算和运动分析。calcOpticalFlowFarnebackcalcOpticalFlowPyrLK
Cuda利用 GPU 加速的计算机视觉算法。cuda::GpuMatcuda::Streamcuda::resize
Contrib社区贡献的额外功能,如人脸识别、文本检测等。FaceRecognizerTextDetector

1. Core模块

core 模块是 OpenCV 的核心模块,提供了基本的数据结构和函数。

主要功能
  • 基本数据结构

    • Mat:用于存储图像和矩阵数据。

    • PointSizeRect:用于表示点、尺寸和矩形区域。

    • Scalar:用于表示颜色或像素值。

  • 矩阵操作

    • 矩阵的创建、复制、转换、算术运算等。

  • 文件 I/O

    • 读取和保存图像、视频、XML/YAML 文件等。

  • 内存管理

    • 自动内存管理,支持引用计数。

实例

#include <opencv2/core.hpp>
#include <iostream>using namespace cv;
using namespace std;int main() {// 创建一个 3x3 的矩阵Mat mat = (Mat_<int>(3, 3) << 1, 2, 3, 4, 5, 6, 7, 8, 9);// 输出矩阵cout << "Matrix:\n" << mat << endl;// 访问矩阵元素int value = mat.at<int>(1, 1);cout << "Value at (1, 1): " << value << endl;return 0;
}

2. Imgproc 模块

imgproc 模块提供了图像处理功能,包括滤波、几何变换、颜色空间转换等。

主要功能
  • 图像滤波

    • 均值滤波、高斯滤波、中值滤波等。

  • 几何变换

    • 缩放、旋转、仿射变换、透视变换等。

  • 颜色空间转换

    • RGB 到灰度、HSV、Lab 等颜色空间的转换。

  • 边缘检测

    • Canny、Sobel、Laplacian 等边缘检测算法。

  • 形态学操作

    • 腐蚀、膨胀、开运算、闭运算等。

  • 阈值化

    • 简单阈值化、自适应阈值化等。

实例

#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>using namespace cv;int main() {// 读取图像Mat image = imread("test.jpg");if (image.empty()) return -1;// 转换为灰度图像Mat grayImage;cvtColor(image, grayImage, COLOR_BGR2GRAY);// 高斯滤波Mat blurredImage;GaussianBlur(grayImage, blurredImage, Size(5, 5), 0);// 显示结果imshow("Original Image", image);imshow("Blurred Image", blurredImage);waitKey(0);return 0;
}

3. Highgui 模块

highgui 模块提供了图像和视频的显示、窗口管理以及用户交互功能。

主要功能
  • 图像显示

    • 创建窗口、显示图像、等待用户输入。

  • 视频捕获

    • 从摄像头或视频文件中读取帧。

  • 用户交互

    • 鼠标事件、滑动条、按钮等。

实例

#include <opencv2/highgui.hpp>using namespace cv;int main() {// 读取图像Mat image = imread("test.jpg");if (image.empty()) return -1;// 创建窗口并显示图像namedWindow("Display Window", WINDOW_AUTOSIZE);imshow("Display Window", image);// 等待用户按键waitKey(0);// 关闭窗口destroyAllWindows();return 0;
}

4. Video 模块

video 模块提供了视频处理功能,包括视频捕获、背景减除、光流计算等。

主要功能
  • 视频捕获

    • 从摄像头或视频文件中读取帧。

  • 背景减除

    • 提取视频中的前景对象。

  • 光流计算

    • 计算图像中物体的运动。

实例

#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>using namespace cv;int main() {// 打开摄像头VideoCapture cap(0);if (!cap.isOpened()) return -1;Mat frame;while (true) {// 读取一帧cap >> frame;if (frame.empty()) break;// 显示帧imshow("Camera Feed", frame);// 按下 ESC 键退出if (waitKey(30) == 27) break;}// 释放摄像头并关闭窗口cap.release();destroyAllWindows();return 0;
}

5. Calib3d 模块

calib3d 模块提供了相机标定、3D 重建、姿态估计等功能。

主要功能
  • 相机标定

    • 计算相机内参和畸变系数。

  • 3D 重建

    • 从多视图图像中重建 3D 场景。

  • 姿态估计

    • 估计物体的 3D 姿态。

实例

#include <opencv2/calib3d.hpp>
#include <opencv2/highgui.hpp>using namespace cv;int main() {// 读取图像Mat image1 = imread("left.jpg");Mat image2 = imread("right.jpg");if (image1.empty() || image2.empty()) return -1;// 特征点检测与匹配Ptr<Feature2D> detector = ORB::create();vector<KeyPoint> keypoints1, keypoints2;Mat descriptors1, descriptors2;detector->detectAndCompute(image1, noArray(), keypoints1, descriptors1);detector->detectAndCompute(image2, noArray(), keypoints2, descriptors2);BFMatcher matcher(NORM_HAMMING);vector<DMatch> matches;matcher.match(descriptors1, descriptors2, matches);// 计算基础矩阵vector<Point2f> points1, points2;for (const auto& match : matches) {points1.push_back(keypoints1[match.queryIdx].pt);points2.push_back(keypoints2[match.trainIdx].pt);}Mat fundamentalMatrix = findFundamentalMat(points1, points2, FM_RANSAC);// 输出基础矩阵cout << "Fundamental Matrix:\n" << fundamentalMatrix << endl;return 0;
}

6. DNN 模块

dnn 模块提供了深度学习模型的加载和推理功能。

主要功能
  • 模型加载

    • 支持 TensorFlow、PyTorch、Caffe 等框架的模型。

  • 推理

    • 对图像进行分类、目标检测、语义分割等。

实例

#include <opencv2/dnn.hpp>
#include <opencv2/highgui.hpp>using namespace cv;
using namespace dnn;int main() {// 加载模型Net net = readNetFromTensorflow("model.pb", "config.pbtxt");// 读取图像Mat image = imread("test.jpg");if (image.empty()) return -1;// 预处理Mat blob = blobFromImage(image, 1.0, Size(300, 300), Scalar(127.5, 127.5, 127.5), true, false);net.setInput(blob);// 推理Mat output = net.forward();// 处理输出// ...return 0;
}

http://www.dtcms.com/a/427899.html

相关文章:

  • PyCharm2025.2 大更新,AI是亮点!
  • 网站怎么做来流量吗网页设计基础实训
  • vuejs 做网站 性能wordpress 能装windows
  • CKAD-CN 考试知识点分享(11) Dockerfile
  • 给人做代工的网站百度地图推广
  • C语言中#pragma的用法
  • 网络原理-HTTP补充2
  • PAD,wafer,MPW
  • 做动画网站wordpress模板查询
  • 数字经济专业就业方向与职业发展分析
  • 网站设计扁平化网站开发背景图
  • 信息系统项目的范围管理(12345智慧政务)
  • 【ubuntu22.04】win11的pycharm本地WSL2部署Gemini Fullstack LangGraph
  • 怎么用手机搭建网站兰州官网优化服务
  • electron 打包web页面解决跨域问题
  • 网站建设 html建设工程招标网官网
  • 自媒体专业宁波网站推广优化外包公司
  • nvm下载node版本,npm -v查看版本报错
  • 网站服务器 电信网站全屏弹出窗口
  • uniapp设置安全区
  • Vue 主应用中同时支持 qiankun 子应用与 iframe 子应用的加载方案
  • 网站icp备案地品牌注册类别
  • 有没有做公司网站的wordpress搜索框插件
  • 专门做当归的网站建设工程合同可以分为
  • 主机如何做网站空间北京南站核酸检测地点
  • k8s-pod的容器类型
  • JVM 性能诊断
  • 网站建设比较wordpress菜单设置中文
  • 网站建设移动时代网站研发公司
  • 郑州网站网页设计深圳装修公司排名榜