gdal读取图像数据转opencv格式,opencv格式再转回gdal格式c++
时间: 2023-10-08 11:14:31 浏览: 201
GDAL图像格式转换
4星 · 用户满意度95%
可以使用以下代码将GDAL读取的图像数据转换为OpenCV格式:
```c++
#include <opencv2/opencv.hpp>
#include <gdal/gdal_priv.h>
int main()
{
GDALAllRegister();
// Open the GDAL dataset
GDALDataset* dataset = (GDALDataset*)GDALOpen("input.tif", GA_ReadOnly);
// Read the first band of the dataset
GDALRasterBand* band = dataset->GetRasterBand(1);
int width = band->GetXSize();
int height = band->GetYSize();
// Allocate memory for the image data
uchar* data = new uchar[width * height];
// Read the image data
band->RasterIO(GF_Read, 0, 0, width, height, data, width, height, GDT_Byte, 0, 0);
// Convert the image data to OpenCV format
cv::Mat image(height, width, CV_8UC1, data);
// Release the GDAL dataset
GDALClose(dataset);
// Do some OpenCV processing...
// Convert the OpenCV image back to GDAL format
GDALDriver* driver = GetGDALDriverManager()->GetDriverByName("GTiff");
GDALDataset* outputDataset = driver->Create("output.tif", width, height, 1, GDT_Byte, NULL);
GDALRasterBand* outputBand = outputDataset->GetRasterBand(1);
outputBand->RasterIO(GF_Write, 0, 0, width, height, data, width, height, GDT_Byte, 0, 0);
// Release the output GDAL dataset
GDALClose(outputDataset);
// Free the memory allocated for the image data
delete[] data;
return 0;
}
```
这段代码将读取名为“input.tif”的GDAL数据集的第一个波段,并将其转换为OpenCV格式的图像。然后,可以对图像进行任何OpenCV处理,并将其转换回GDAL格式,以便将其写入名为“output.tif”的输出文件中。
阅读全文