C++如何进行图像处理_使用OpenCV库在C++中读取、修改和保存图片

8次阅读

OpenCV 是 C ++ 中图像处理最常用且功能强大的库,支持读取、修改和保存图像。1. 安装配置:Windows 用户可用 vcpkg 或预编译库,Linux 用 sudo apt install libopencv-dev,macOS 用 brew install opencv;包含头文件 #include 并使用命名空间 cv。2. 读取图像:用 imread()函数加载 PNG、JPEG 等格式,支持 IMREAD_COLOR、IMREAD_GRAYSCALE、IMREAD_UNCHANGED 参数,需检查 Mat 是否为空。3. 修改图像:图像为 Mat 对象,可遍历像素或调用函数操作,如 cvtColor 转灰度图,convertTo 调亮度,line 画线,或通过 img.at(i,j)逐像素修改通道值。4. 保存图像:用 imwrite()将 Mat 保存为文件,自动根据扩展名选择格式,返回 bool 表示成功与否。掌握这四步可实现基本图像处理,OpenCV 还支持滤波、边缘检测、人脸识别等高级功能。

C++ 如何进行图像处理_使用 OpenCV 库在 C ++ 中读取、修改和保存图片

在 C ++ 中进行图像处理,最常用且功能强大的库是 OpenCV。它提供了丰富的函数来读取、修改和保存图像,适用于各种 计算机 视觉任务。下面介绍如何使用 OpenCV 在 C ++ 中实现基本的图像操作。

1. 安装与配置 OpenCV

要使用 OpenCV,首先需要安装并配置环境:

  • Windows 用户可使用 vcpkg 或预编译的 OpenCV 库,配合 Visual Studio 使用。
  • Linux 用户可通过包管理器安装,例如:sudo apt install libopencv-dev
  • macOS 用户可使用 Homebrew:brew install opencv

配置好项目后,在代码中包含头文件:

#include  using namespace cv;

2. 读取图像

使用 imread() 函数可以加载图像文件。支持格式包括 PNG、JPEG、BMP 等。

立即学习C++ 免费学习笔记(深入)”;

示例代码:

Mat img = imread("input.jpg"); if (img.empty()) {std::cout << "无法读取图像!检查路径是否正确。" << std::endl;     return -1;}

参数说明:

  • IMREAD_COLOR:以彩色模式读取(默认)。
  • IMREAD_GRAYSCALE:转为灰度图。
  • IMREAD_UNCHANGED:包含 Alpha 通道。

3. 修改图像

图像本质是矩阵(Mat 对象),可以通过遍历像素或调用函数进行修改。

常见操作示例:

  • 转为灰度图:Mat gray; cvtColor(img, gray, COLOR_BGR2GRAY);
  • 调整亮度:使用 convertTo() 或逐像素操作。
  • 绘制图形:如画线:line(img, Point(0,0), Point(100,100), Scalar(0,0,255), 2);

遍历像素修改亮度的例子:

for (int i = 0; i < img.rows; i++) {for (int j = 0; j < img.cols; j++) {img.at(i,j)[0] += 50; // 蓝色通道加 50         img.at(i,j)[1] += 50; // 绿色通道         img.at(i,j)[2] += 50; // 红色通道     } }

4. 保存图像

使用 imwrite() 将 Mat 对象保存为文件。

示例:

bool success = imwrite("output.png", img); if (success) {std::cout << "图像已成功保存!" << std::endl;} else {std::cout << "保存失败!" << std::endl;}

支持自动根据扩展名选择格式(如。png、.jpg)。

基本上就这些。掌握读取、修改和保存三步,就能在 C ++ 中灵活处理图像。OpenCV 还支持滤波、边缘检测、人脸识别 等高级功能,适合深入学习。

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-04发表,共计849字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources