opencv入门c++
时间: 2025-01-04 07:17:31 浏览: 8
### OpenCV C++ 入门教程
#### 1. 图像读取与显示
为了展示如何使用OpenCV在C++中读取并显示图像,下面提供了一个简单的例子。这段代码展示了如何加载一张图片,并通过窗口界面将其呈现给用户。
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
// 加载彩色模式下的图像文件
Mat image = imread("lena.jpg", IMREAD_COLOR);
// 如果未能成功打开或找到指定路径的图像,则给出提示信息并退出程序
if (image.empty()) {
cout << "无法打开或找不到该图像" << endl;
return -1;
}
// 创建名为 'Image' 的窗口来展示所读入的图像数据
imshow("Image", image);
// 程序暂停执行直到有任意键被按下为止
waitKey(0);
return 0;
}
```
此段代码实现了从磁盘读取一幅名为`lena.jpg`的图像到内存中的矩阵对象(`Mat`)里[^1]。如果遇到错误情况(比如找不到文件),则会打印一条消息告知用户,并终止应用程序运行。接着,在屏幕上弹出一个小窗格用于可视化这张照片的内容;最后一步是等待用户的键盘输入作为信号关闭这个视图。
#### 2. 处理不同类型的媒体源
除了静态图片外,还可以利用相同的方法处理来自摄像头或其他视频流的数据。这里有一个稍微复杂一点的例子:
```cpp
#include <pch.h>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
class QuickDemo {
public:
void colorSpace_Demo(Mat& img){
vector<Mat> bgr_planes;
split(img,bgr_planes);
// 对每个颜色通道分别做直方图均衡化...
equalizeHist(bgr_planes[0],bgr_planes[0]);
equalizeHist(bgr_planes[1],bgr_planes[1]);
equalizeHist(bgr_planes[2],bgr_planes[2]);
merge(bgr_planes,img);
}
};
int main(int argc, char** argv) {
Mat src = imread("D:/opencv/test.jpg");
if (src.empty()){
printf("...\n");
return -1;
}
namedWindow("输入窗口", WINDOW_AUTOSIZE); // 自动调整大小而非自由比例缩放
imshow("输入窗口", src);
QuickDemo qd;
qd.colorSpace_Demo(src);
waitKey(0);
destroyAllWindows();
return 0;
}
```
上述实例不仅包含了基本的图像读写功能,还引入了一些额外的操作,如色彩空间转换和直方图拉伸等高级特性[^2]。注意这里的`namedWindow()`函数指定了窗口尺寸随内容自动适应而不是保持原始宽高比不变。
阅读全文