C++ OpenCV 图像读取、保存及处理:完整指南
C++ OpenCV 图像读取、保存及处理:完整指南
本文将深入浅出地讲解C++和OpenCV库中图像读取、保存、显示、通道、像素值、尺寸、裁剪、缩放、转换和处理等关键知识点。
1. 图像数据类型
OpenCV 支持多种图像数据类型,包括灰度图像、彩色图像和深度图像等。
2. 图像读取
使用 OpenCV 的 imread 函数可以读取图像文件。常见的图像格式包括 BMP、JPEG、PNG 等。
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread('path/to/image.jpg');
// 处理图像
return 0;
}
3. 图像保存
使用 OpenCV 的 imwrite 函数可以将图像保存为指定格式的文件,常见的格式包括 BMP、JPEG、PNG 等。
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread('path/to/image.jpg');
// 处理图像
imwrite('path/to/save.png', image);
return 0;
}
4. 图像显示
使用 OpenCV 的 imshow 函数可以将图像显示在窗口中。需要注意的是,需要先创建一个窗口并指定窗口名称。
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread('path/to/image.jpg');
namedWindow('Image Window', WINDOW_AUTOSIZE);
imshow('Image Window', image);
waitKey(0);
return 0;
}
5. 图像通道
彩色图像包含多个通道,每个通道表示不同的颜色信息。常见的有 RGB、HSV、YCrCb 等。
6. 像素值
图像的像素值表示图像中每个像素的亮度或颜色信息。可以通过 Mat 对象的 at 方法获取或修改像素值。
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread('path/to/image.jpg');
// 获取像素值
int pixelValue = image.at<uchar>(row, col);
// 修改像素值
image.at<uchar>(row, col) = newValue;
return 0;
}
7. 图像尺寸
图像的尺寸表示图像的宽度和高度。可以通过 Mat 对象的 cols 和 rows 属性获取。
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread('path/to/image.jpg');
int width = image.cols;
int height = image.rows;
return 0;
}
8. 图像裁剪
使用 Mat 对象的 ROI 方法可以对图像进行裁剪操作,可以指定裁剪的区域和大小。
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread('path/to/image.jpg');
Rect roi(x, y, width, height);
Mat croppedImage = image(roi);
return 0;
}
9. 图像缩放
使用 OpenCV 的 resize 函数可以对图像进行缩放操作,可以指定缩放后的大小和插值方法。
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread('path/to/image.jpg');
resize(image, resizedImage, Size(newWidth, newHeight), 0, 0, INTER_LINEAR);
return 0;
}
10. 图像转换
使用 OpenCV 的 cvtColor 函数可以对图像进行颜色空间转换,可以将彩色图像转换为灰度图像或者其他颜色空间。
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread('path/to/image.jpg');
cvtColor(image, grayImage, COLOR_BGR2GRAY);
return 0;
}
11. 图像处理
OpenCV 提供了丰富的图像处理函数,包括滤波、形态学操作、边缘检测、特征提取等。可以使用这些函数对图像进行处理和分析。
更多学习资源:
- OpenCV 官方文档:https://docs.opencv.org/4.x/index.html
- OpenCV 中文教程:https://www.cnblogs.com/Imageshop/category/792490.html
希望本文能够帮助您更好地理解 C++ 和 OpenCV 图像处理的基本知识。如果您有任何疑问,欢迎在评论区留言。
原文地址: https://www.cveoy.top/t/topic/j7ix 著作权归作者所有。请勿转载和采集!