c++ OpenCV
时间: 2025-01-06 14:46:29 浏览: 44
### C++ OpenCV 使用教程及实例
#### 创建工程与基本配置
为了使用 OpenCV 库,在创建新的 C++ 工程之前,需先下载并安装 OpenCV。完成之后,要确保编译器能够找到头文件以及链接所需的库文件。对于大多数集成开发环境 (IDE),这涉及到设置包含路径和库路径。
在 `img_show.h` 文件中展示了如何引入必要的 OpenCV 头文件[^2]:
```cpp
#pragma once
#ifndef __IMG_SHOW__
#define __IMG_SHOW__
#include <iostream>
#include <opencv2/opencv.hpp>
namespace img_test {
class test {
public:
int sum(int a, int b) { return a + b; }
int aa = 10, bb = 15;
private:
int a, b;
};
}
#endif // !
```
此代码片段定义了一个简单的类 `test` 并包含了 OpenCV 的核心模块和其他常用组件的头文件。
#### 基本操作:显示图片
通过上述准备后,可以编写程序来加载一张图片,并利用窗口功能展示出来。以下是具体实现方式:
```cpp
#include "img_show.h"
int main() {
using namespace cv;
Mat image;
image = imread("example.png", IMREAD_COLOR); // Read the file
if (image.empty()) { // Check for invalid input
std::cout << "Could not open or find the image" << std::endl;
return -1;
}
namedWindow("Display window", WINDOW_AUTOSIZE);
imshow("Display window", image);
waitKey(0); // Wait indefinitely until key press event occurs.
}
```
这段代码实现了从磁盘读取图像文件的功能,并在一个名为 “Display window”的窗口内呈现该图像。如果找不到指定路径下的图像,则会打印错误消息并退出应用程序。
#### 几何变换:调整大小
除了基础的操作外,还可以应用各种几何转换到输入的数据上。例如,可以通过调用 `cv::resize()` 方法轻松地更改图像尺寸。下面给出了一段完整的例子用于说明这一点[^3]:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat srcImg = imread("input.jpg");
double scaleFactor = 0.75;
Size newSize(srcImg.cols * scaleFactor, srcImg.rows * scaleFactor);
Mat dstImg;
resize(srcImg, dstImg, newSize);
imshow("Source Image", srcImg);
imshow("Resized Image", dstImg);
waitKey();
}
```
这里演示了怎样按比例缩小给定的一张照片;用户可以根据实际需求修改参数以适应不同的应用场景。
#### 密集光流计算
最后介绍的是关于视频处理方面的一个重要概念—密集光流场估计。它可以帮助我们理解连续帧之间物体运动情况的变化趋势。下面是执行这一过程所需的关键步骤概述[^4]:
```cpp
VideoCapture cap("video.mp4");
if (!cap.isOpened())
{
printf("Cannot open video\n");
return -1;
}
Mat prevFrame, currFrame, flowField, hsvFlowMap, rgbFlowMap;
for (;;)
{
cap >> prevFrame;
if (prevFrame.empty())
break;
cap >> currFrame;
if (currFrame.empty())
continue;
calcOpticalFlowFarneback(prevFrame, currFrame, flowField, 0.5, 3, 15, 3, 5, 1.2, 0);
// Convert optical flow into HSV color space and then to RGB...
}
```
以上就是有关于C++环境下运用OpenCV的一些基础知识和技术要点。希望这些信息能帮助读者更好地理解和掌握这个强大的计算机视觉工具包!
阅读全文
相关推荐













