c++ openCV
时间: 2025-01-09 21:37:31 浏览: 2
### 如何在C++项目中使用OpenCV库进行图像处理
#### 安装配置环境
为了能够在C++项目中利用OpenCV库执行图像处理操作,前期准备工作至关重要。对于Windows平台而言,在Visual Studio环境下集成OpenCV涉及下载预构建二进制文件或是源码自行编译;而针对Ubuntu操作系统,则推荐采用包管理器apt-get安装官方稳定版本[^1]。
#### 加载与显示图片
一旦完成上述设置之后,就可以着手编写简单的程序来加载并展示一幅图像了。下面给出了一段基础代码片段用于说明这一过程:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if (argc != 2)
{
printf(" 使用方法: ./program_name image_path\n");
return -1;
}
Mat img = imread(argv[1], IMREAD_COLOR); // Read the file using command line argument as path to image.
if(img.empty()) // Check for invalid input
{
printf("无法读取图片 %s \n",argv[1]);
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", img ); // Show our image inside it.
waitKey(0); // Wait indefinitely until keypress.
return 0;
}
```
这段代码实现了命令行参数指定路径下彩色图片的读入、创建窗口以及将该图象呈现给用户查看的功能。
#### 图像矩形区域提取
当涉及到更复杂的图像处理任务时,比如裁剪特定位置上的子区城作为新的工作对象,`cv::Rect` 类就显得非常有用处了。它允许定义一个由左上角坐标(x,y),宽度width和高度height所组成的矩形范围,并可以直接应用于矩阵类型的变量之上以便获取感兴趣的部分[^3]。
例如:
```cpp
Rect myROI(10, 10, 100, 50);
Mat croppedImage = img(myROI).clone();
imshow("cropped Image", croppedImage );
waitKey(0);
```
此部分展示了如何从原始输入img中截取出位于(10,10)到宽100高50像素大小的新视窗,并将其独立保存为另一个名为`croppedImage` 的矩阵实例供后续分析或变换之用。
阅读全文