问题: 多幅影像切片,但是影像直接有重叠还有黑边, 还有色差.
如图:
需要达到的效果:
解决方案:
使用GDALBuildVRT 构建 虚拟数据集, 并使用额外参数 hidenodata srcnodata vrtnodata
关键代码如下: 其中names 就是一堆tif,img的 GDAL能打开的影像数据集, 创建完成后就可以把返回的t当作普通GDAL栅格数据操作,非常方便. 但是要注意 如果影像中间有纯黑将会被透明点, 不过一般影像都是彩色,纯黑很少,基本没多大影像.
GDALBuildVRTOptionsForBinary* VRTFB = NULL;
std::vector<char*> papszArgv = { "-hidenodata", "-srcnodata", "0", "-vrtnodata", "0", nullptr};
GDALBuildVRTOptions *VRTOptions = NULL;
VRTOptions = GDALBuildVRTOptionsNew(&papszArgv[0], VRTFB);
GDALDatasetH t = GDALBuildVRT("", size, NULL, names, VRTOptions, &bUsageError);
if (bUsageError != 0)
{
ReleaseDataSet((GDALDataset*)t);
GDALBuildVRTOptionsFree(VRTOptions);
return;
}