問題: 多幅影像切片,但是影像直接有重疊還有黑邊, 還有色差.
如圖:
需要達到的效果:
解決方案:
使用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;
}