gdal逐像元读取像素并写进新影像中C++
时间: 2024-05-04 21:18:55 浏览: 24
使用GDAL库可以逐像元读取像素并写进新影像中。下面是一个简单的示例代码:
```c++
#include <gdal_priv.h>
int main() {
// 打开输入影像
GDALAllRegister();
GDALDataset *poSrcDS = (GDALDataset *) GDALOpen("input.tif", GA_ReadOnly);
if (poSrcDS == NULL) {
printf("Failed to open input image!\n");
return 1;
}
// 获取输入影像的宽度和高度
int nXSize = poSrcDS->GetRasterXSize();
int nYSize = poSrcDS->GetRasterYSize();
// 创建输出影像
GDALDriver *poDriver = GetGDALDriverManager()->GetDriverByName("GTiff");
GDALDataset *poDstDS = poDriver->Create("output.tif", nXSize, nYSize, 1, GDT_Float32, NULL);
// 分配一行缓冲区
float *pafScanline = (float *) CPLMalloc(sizeof(float) * nXSize);
// 逐像元读取像素并写进新影像中
for (int i = 0; i < nYSize; i++) {
poSrcDS->GetRasterBand(1)->RasterIO(GF_Read, 0, i, nXSize, 1, pafScanline, nXSize, 1, GDT_Float32, 0, 0);
poDstDS->GetRasterBand(1)->RasterIO(GF_Write, 0, i, nXSize, 1, pafScanline, nXSize, 1, GDT_Float32, 0, 0);
}
// 释放内存
CPLFree(pafScanline);
GDALClose(poSrcDS);
GDALClose(poDstDS);
return 0;
}
```
这个示例代码逐行读取输入影像的像素,并将其写入新影像中。你可以根据需要修改它来满足你的需求。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)