opencv2/opencv.hpp里面有哪些常用的函数
是 OpenCV 的核心头文件,包含了大量用于图像处理、视频处理、特征检测、机器学习和深度学习的函数和类。以上列出的是一些常用的函数,但 OpenCV 的功能远不止这些。通过阅读官方文档和参考示例代码,可以更深入地了解和使用 OpenCV 的强大功能。
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); -
cppcv::drawKeypoints:绘制关键点。复制
cv::Mat imgWithKeypoints; cv::drawKeypoints(img, keypoints, imgWithKeypoints, cv::Scalar::all(-1), cv::DrawMatchesFlags::DEFAULT);
5. 视频处理
-
cppcv::VideoCapture:读取视频文件或摄像头。复制
cv::VideoCapture cap("video.mp4"); -
cppcv::VideoWriter:保存视频文件。复制
cv::VideoWriter writer; writer.open("output.mp4", cv::VideoWriter::fourcc('m', 'p', '4', 'v'), 30, cv::Size(640, 480)); -
cppcv::Mat:用于存储视频帧。复制
cv::Mat frame; while (cap.read(frame)) { cv::imshow("Frame", frame); writer.write(frame); }
6. 数学运算
-
cppcv::add:图像加法。复制
cv::Mat result; cv::add(img1, img2, result); -
cppcv::subtract:图像减法。复制
cv::subtract(img1, img2, result); -
cppcv::multiply:图像乘法。复制
cv::multiply(img1, img2, result, 1.0, CV_32F);
7. 绘图功能
-
cppcv::rectangle:绘制矩形。复制
cv::rectangle(img, cv::Point(10, 10), cv::Point(100, 100), cv::Scalar(0, 255, 0), 2); -
cppcv::circle:绘制圆形。复制
cv::circle(img, cv::Point(50, 50), 30, cv::Scalar(0, 0, 255), -1); -
cppcv::line:绘制直线。复制
cv::line(img, cv::Point(0, 0), cv::Point(100, 100), cv::Scalar(255, 0, 0), 2); -
cppcv::putText:在图像上绘制文本。复制
cv::putText(img, "Hello, OpenCV!", cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(255, 255, 255), 2);
8. 机器学习
-
cppcv::ml::SVM:支持向量机(SVM)。复制
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); -
cppcv::ml::KNearest:K-近邻算法(KNN)。复制
cv::Ptr<cv::ml::KNearest> knn = cv::ml::KNearest::create(); knn->train(trainingData, cv::ml::ROW_SAMPLE, labels);
9. 深度学习
-
cppcv::dnn::readNetFromCaffe:从Caffe模型加载深度学习网络。复制
cv::dnn::Net net = cv::dnn::readNetFromCaffe("deploy.prototxt", "weights.caffemodel"); -
cppcv::dnn::readNetFromTensorflow:从TensorFlow模型加载深度学习网络。复制
cv::dnn::Net net = cv::dnn::readNetFromTensorflow("model.pb"); -
cppcv::dnn::Net::setInput:设置输入数据。复制
cv::Mat blob = cv::dnn::blobFromImage(img, 1.0, cv::Size(300, 300), cv::Scalar(104, 117, 123)); net.setInput(blob); -
cppcv::dnn::Net::forward:执行前向传播。复制
cv::Mat detections = net.forward();
10. 其他常用功能
-
cppcv::findContours:查找轮廓。复制
std::vector<std::vector<cv::Point>> contours; cv::findContours(binary, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE); -
cppcv::drawContours:绘制轮廓。复制
cv::drawContours(img, contours, -1, cv::Scalar(0, 255, 0), 2); -
cppcv::inRange:颜色阈值分割。复制
cv::Mat mask; cv::inRange(hsv, cv::Scalar(35, 43, 46), cv::Scalar(77, 255, 255), mask);
总结
opencv2/opencv.hpp 是 OpenCV 的核心头文件,包含了大量用于图像处理、视频处理、特征检测、机器学习和深度学习的函数和类。以上列出的是一些常用的函数,但 OpenCV 的功能远不止这些。通过阅读官方文档和参考示例代码,可以更深入地了解和使用 OpenCV 的强大功能。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)