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

opencv2/opencv.hpp里面有哪些常用的函数

opencv2/opencv.hpp 是 OpenCV(Open Source Computer Vision Library)的核心头文件,它包含了 OpenCV 的大部分功能模块的声明。OpenCV 是一个开源的计算机视觉和机器学习软件库,广泛应用于图像处理、视频分析、目标检测和识别等领域。

以下是一些在 opencv2/opencv.hpp 中声明的常用函数和类,按功能模块分类介绍:

1. 图像读取与显示

  • cv::imread:读取图像文件

    cv::Mat img = cv::imread("image.jpg", cv::IMREAD_COLOR);
  • cv::imshow:显示图像

    cv::imshow("Window Name", img);
  • cv::imwrite:保存图像到文件

    cv::imwrite("output.jpg", img);
  • cv::waitKey:等待键盘输入

    cv::waitKey(0); // 等待用户按键

2. 图像处理

  • cv::cvtColor:颜色空间转换

    cv::Mat gray;
    cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);
  • cv::GaussianBlur高斯模糊

    cv::Mat blurred;
    cv::GaussianBlur(img, blurred, cv::Size(5, 5), 0);
  • cv::Canny:Canny边缘检测

    cv::Mat edges;
    cv::Canny(gray, edges, 50, 150);
  • cv::threshold:阈值操作

    cv::Mat binary;
    cv::threshold(gray, binary, 128, 255, cv::THRESH_BINARY);

3. 几何变换

  • cv::resize:调整图像大小

    cv::Mat resized;
    cv::resize(img, resized, cv::Size(300, 300));
  • cv::flip:图像翻转

    cv::Mat flipped;
    cv::flip(img, flipped, 1); // 水平翻转
  • cv::warpAffine仿射变换

    cv::Mat rotated;
    cv::Mat rotMat = cv::getRotationMatrix2D(cv::Point2f(img.cols / 2, img.rows / 2), 45, 1.0);
    cv::warpAffine(img, rotated, rotMat, img.size());
  • cv::warpPerspective:透视变换

    cv::Mat warped;
    cv::Mat perspMat = cv::getPerspectiveTransform(srcPoints, dstPoints);
    cv::warpPerspective(img, warped, perspMat, img.size());

4. 特征检测与描述

  • cv::SIFT:尺度不变特征变换(SIFT)

    cv::Ptr<cv::SIFT> sift = cv::SIFT::create();
    std::vector<cv::KeyPoint> keypoints;
    cv::Mat descriptors;
    sift->detectAndCompute(img, cv::Mat(), keypoints, descriptors);
  • cv::ORB:定向快速和旋转不变特征(ORB)

    cv::Ptr<cv::ORB> orb = cv::ORB::create();
    orb->detectAndCompute(img, cv::Mat(), keypoints, descriptors);
  • cv::drawKeypoints:绘制关键点。

    cpp

    复制

    cv::Mat imgWithKeypoints;
    cv::drawKeypoints(img, keypoints, imgWithKeypoints, cv::Scalar::all(-1), cv::DrawMatchesFlags::DEFAULT);

5. 视频处理

  • cv::VideoCapture:读取视频文件或摄像头。

    cpp

    复制

    cv::VideoCapture cap("video.mp4");
  • cv::VideoWriter:保存视频文件。

    cpp

    复制

    cv::VideoWriter writer;
    writer.open("output.mp4", cv::VideoWriter::fourcc('m', 'p', '4', 'v'), 30, cv::Size(640, 480));
  • cv::Mat:用于存储视频帧。

    cpp

    复制

    cv::Mat frame;
    while (cap.read(frame)) {cv::imshow("Frame", frame);writer.write(frame);
    }

6. 数学运算

  • cv::add:图像加法。

    cpp

    复制

    cv::Mat result;
    cv::add(img1, img2, result);
  • cv::subtract:图像减法。

    cpp

    复制

    cv::subtract(img1, img2, result);
  • cv::multiply:图像乘法。

    cpp

    复制

    cv::multiply(img1, img2, result, 1.0, CV_32F);

7. 绘图功能

  • cv::rectangle:绘制矩形。

    cpp

    复制

    cv::rectangle(img, cv::Point(10, 10), cv::Point(100, 100), cv::Scalar(0, 255, 0), 2);
  • cv::circle:绘制圆形。

    cpp

    复制

    cv::circle(img, cv::Point(50, 50), 30, cv::Scalar(0, 0, 255), -1);
  • cv::line:绘制直线。

    cpp

    复制

    cv::line(img, cv::Point(0, 0), cv::Point(100, 100), cv::Scalar(255, 0, 0), 2);
  • cv::putText:在图像上绘制文本。

    cpp

    复制

    cv::putText(img, "Hello, OpenCV!", cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(255, 255, 255), 2);

8. 机器学习

  • cv::ml::SVM:支持向量机(SVM)。

    cpp

    复制

    cv::Ptr<cv::ml::SVM> svm = cv::ml::SVM::create();
    svm->setType(cv::ml::SVM::C_SVC);
    svm->setKernel(cv::ml::SVM::LINEAR);
    svm->train(trainingData, cv::ml::ROW_SAMPLE, labels);
  • cv::ml::KNearest:K-近邻算法(KNN)。

    cpp

    复制

    cv::Ptr<cv::ml::KNearest> knn = cv::ml::KNearest::create();
    knn->train(trainingData, cv::ml::ROW_SAMPLE, labels);

9. 深度学习

  • cv::dnn::readNetFromCaffe:从Caffe模型加载深度学习网络。

    cpp

    复制

    cv::dnn::Net net = cv::dnn::readNetFromCaffe("deploy.prototxt", "weights.caffemodel");
  • cv::dnn::readNetFromTensorflow:从TensorFlow模型加载深度学习网络。

    cpp

    复制

    cv::dnn::Net net = cv::dnn::readNetFromTensorflow("model.pb");
  • cv::dnn::Net::setInput:设置输入数据。

    cpp

    复制

    cv::Mat blob = cv::dnn::blobFromImage(img, 1.0, cv::Size(300, 300), cv::Scalar(104, 117, 123));
    net.setInput(blob);
  • cv::dnn::Net::forward:执行前向传播。

    cpp

    复制

    cv::Mat detections = net.forward();

10. 其他常用功能

  • cv::findContours:查找轮廓。

    cpp

    复制

    std::vector<std::vector<cv::Point>> contours;
    cv::findContours(binary, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
  • cv::drawContours:绘制轮廓。

    cpp

    复制

    cv::drawContours(img, contours, -1, cv::Scalar(0, 255, 0), 2);
  • cv::inRange:颜色阈值分割。

    cpp

    复制

    cv::Mat mask;
    cv::inRange(hsv, cv::Scalar(35, 43, 46), cv::Scalar(77, 255, 255), mask);

总结

opencv2/opencv.hpp 是 OpenCV 的核心头文件,包含了大量用于图像处理、视频处理、特征检测、机器学习和深度学习的函数和类。以上列出的是一些常用的函数,但 OpenCV 的功能远不止这些。通过阅读官方文档和参考示例代码,可以更深入地了解和使用 OpenCV 的强大功能。

http://www.xdnf.cn/news/12589.html

相关文章:

  • 从混乱到秩序:探索管理系统如何彻底改变工作流程
  • Spring 团队详解:AOT 缓存实践、JSpecify 空指针安全与支持策略升级
  • Python 构建法律DeepSeek RAG
  • 35.成功解决编写关于“江协科技”编写技巧第二期标志位积累的问题
  • PostgreSQL 的扩展pg_freespacemap
  • Webhook 配置备忘
  • Imprompter: Tricking LLM Agents into Improper Tool Use
  • VUE解决页面请求接口大规模并发的问题(请求队列)
  • 通过跳板机连接远程主机
  • 【佳易王个体诊所电子处方软件】助力智慧诊疗! #医疗数字化 #电子处方效率提升
  • MySQL体系架构解析(三):MySQL数据存储的揭秘
  • 从0到1写一个适用于Node.js的User Agent生成库
  • 矩阵和向量范数的区别分析
  • GAN模式奔溃的探讨论文综述(一)
  • SQL进阶之旅 Day 17:大数据量查询优化策略
  • C++.OpenGL (9/64)复习(Review)
  • 【论文阅读笔记】万花筒:用于异构多智能体强化学习的可学习掩码
  • vb监测Excel两个单元格变化,达到阈值响铃
  • 【Linux跬步积累】—— 网络编程套接字(二)
  • 精益数据分析(94/126):30/10/10用户参与法则与定价策略的科学制定
  • Linux(Centos 7.6)命令详解:sed
  • react public/index.html文件使用env里面的变量
  • gitee 拉取失败
  • javascript中Cookie、BOM、DOM的使用
  • JS设计模式(4):观察者模式
  • java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟
  • vsCode使用本地低版本node启动配置文件
  • sklearn 和 pytorch tensorflow什么关系
  • k8s部署dify
  • Python打卡第46天