OpenCV 基本模块

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

模块名称 主要功能 常用类/函数
Core 提供基本数据结构和函数,如图像存储、矩阵操作、文件 I/O 等。 Mat, Point, Size, Rect, Scalar, FileStorage, cv::format
Imgproc 图像处理功能,包括滤波、几何变换、颜色空间转换、边缘检测、形态学操作、阈值化等。 cvtColor, GaussianBlur, Canny, threshold, resize, warpAffine
Highgui 图像和视频的显示、窗口管理、用户交互(如鼠标事件、滑动条)。 imshow, namedWindow, waitKey, createTrackbar, setMouseCallback
Video 视频处理功能,包括视频捕获、背景减除、光流计算等。 VideoCapture, VideoWriter, BackgroundSubtractor, calcOpticalFlowPyrLK
Calib3d 相机标定、3D 重建、姿态估计等。 findChessboardCorners, calibrateCamera, solvePnP, recoverPose
Features2d 特征检测与描述,包括关键点检测、特征匹配等。 ORB, SIFT, SURF, BFMatcher, FlannBasedMatcher
Objdetect 目标检测功能,如 Haar 级联检测、HOG 检测等。 CascadeClassifier, HOGDescriptor
DNN 深度学习模型的加载和推理,支持 TensorFlow、PyTorch、Caffe 等框架。 readNet, blobFromImage, Net::forward
ML 机器学习算法,如 KNN、SVM、决策树等。 KNearest, SVM, DTrees, TrainData
Flann 快速近似最近邻搜索(FLANN),用于特征匹配和高维数据搜索。 Index, KDTreeIndexParams, SearchParams
Photo 图像修复、去噪、HDR 成像等。 inpaint, fastNlMeansDenoising, createTonemap
Stitching 图像拼接功能,用于创建全景图。 Stitcher, Stitcher::create
Shape 形状分析和匹配。 ShapeDistanceExtractor, ShapeContextDistanceExtractor
Tracking 目标跟踪算法,如 MIL、KCF、GOTURN 等。 TrackerMIL, TrackerKCF, TrackerGOTURN
Videoio 视频输入输出功能,支持多种视频格式和摄像头。 VideoCapture, VideoWriter, CAP_PROP_FRAME_WIDTH, CAP_PROP_FRAME_HEIGHT
Imgcodecs 图像文件的读取和保存,支持多种图像格式。 imread, imwrite, imdecode, imencode
Xfeatures2d 额外的特征检测与描述算法,如 SIFT、SURF、FREAK 等。 SIFT, SURF, FREAK, DAISY
Superres 超分辨率图像处理。 SuperResolution, DenseOpticalFlowExt
Optflow 光流计算和运动分析。 calcOpticalFlowFarneback, calcOpticalFlowPyrLK
Cuda 利用 GPU 加速的计算机视觉算法。 cuda::GpuMat, cuda::Stream, cuda::resize
Contrib 社区贡献的额外功能,如人脸识别、文本检测等。 FaceRecognizer, TextDetector

1. Core模块

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

主要功能
  • 基本数据结构

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

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

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

  • 矩阵操作

    • 矩阵的创建、复制、转换、算术运算等。
  • 文件 I/O

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

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

实例

cpp 复制代码
#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 等边缘检测算法。
  • 形态学操作

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

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

实例

cpp 复制代码
#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 模块提供了图像和视频的显示、窗口管理以及用户交互功能。

主要功能
  • 图像显示

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

    • 从摄像头或视频文件中读取帧。
  • 用户交互

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

实例

cpp 复制代码
#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 模块提供了视频处理功能,包括视频捕获、背景减除、光流计算等。

主要功能
  • 视频捕获

    • 从摄像头或视频文件中读取帧。
  • 背景减除

    • 提取视频中的前景对象。
  • 光流计算

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

实例

cpp 复制代码
#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 姿态。

实例

cpp 复制代码
#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 等框架的模型。
  • 推理

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

实例

cpp 复制代码
#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;
}
相关推荐
龙山云仓4 小时前
记忆,是意识的第一块基石-老D(DeepSeek)· 类人成长记忆册
人工智能·深度学习·机器学习
yongyoudayee4 小时前
AI CRM架构深度解析:销售易NeoAgent 2.0如何打破“AI+套壳“的技术困局
大数据·人工智能·架构
ComputerInBook4 小时前
数字图像处理——倍频(octave)图像
人工智能·深度学习·计算机视觉·倍频图像
财经科技4 小时前
AI重塑营销流量逻辑 伟淼科技李志伟深度拆解SEO、SEM、GEO差异化应用
人工智能·科技
夜郎king5 小时前
厂区周边 3km POI 业态分布全景解析-以生产企业为例
大数据·人工智能·空间智能·空间可视化
美狐美颜sdk5 小时前
美颜SDK开发难点有哪些?Android/iOS美颜SDK接入
人工智能·音视频·直播美颜sdk·视频美颜sdk·美狐美颜sdk
电科一班林耿超5 小时前
深度学习大师课 第 1 课:什么是深度学习?纯手写你的第一个神经网络
人工智能·深度学习·神经网络
人月神话-Lee5 小时前
【图像处理】颜色科学与灰度化——人眼看到的和数字记录的不一样
图像处理·人工智能·计算机视觉·ios·swift
跨境卫士—小依5 小时前
美国邮政渠道开始计税后跨境卖家如何重写小包报价逻辑
大数据·人工智能·安全·跨境电商·营销策略
covco5 小时前
AI 原生全域矩阵系统:智能任务调度与资源负载均衡技术实现
人工智能·矩阵·负载均衡