cv::Mat保存为raw格式,完整代码
时间: 2023-11-22 17:52:49 浏览: 44
下面是使用 OpenCV 库将 `cv::Mat` 保存为 raw 格式的完整代码:
```cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char *argv[]) {
if (argc != 3) {
cerr << "Usage: " << argv[0] << " <input_file> <output_file>" << endl;
return 1;
}
Mat image = imread(argv[1], IMREAD_COLOR);
if (image.empty()) {
cerr << "Failed to read image from file: " << argv[1] << endl;
return 1;
}
// 确保图像数据存储为连续空间
if (!image.isContinuous()) {
image = image.clone();
}
// 打开输出文件
FILE *fp = fopen(argv[2], "wb");
if (!fp) {
cerr << "Failed to open output file: " << argv[2] << endl;
return 1;
}
// 写入图像宽度和高度
fwrite(&image.cols, sizeof(int), 1, fp);
fwrite(&image.rows, sizeof(int), 1, fp);
// 写入图像数据
fwrite(image.data, sizeof(uchar), image.total() * image.elemSize(), fp);
// 关闭文件
fclose(fp);
return 0;
}
```
其中,`imread` 函数用于读取输入图像,`fwrite` 函数用于将数据写入文件。注意,写入数据时需要先写入图像的宽度和高度,再写入图像数据。