我在单独的tif文件中有R,G,B波段。每个文件都有掩码,其中没有数据值为0。 以下命令可以完成工作:
gdal_calc.py -A red.tif --A_band=2 -B green.tif --B_band=2 -C blue.tif --C_band=2 --outfile=mask.tif --calc="255*logical_or(logical_or(A==0,B==0),C==0)" --NoDataValue=255
但是,我可以有更多的band,我想使用numpy.any()动态生成命令:
gdal_calc.py -A red.tif --A_band=2 -B green.tif --B_band=2 -C blue.tif --C_band=2 --outfile=mask.tif --calc="255*any([A==0,B==0,C==0])" --NoDataValue=255
然而,似乎any()总是返回True而mask.tif的所有像素值都是255.我想使用255的值作为掩码,因为255 *(真/假)是0/255与0相反*(真/假)始终为0.
感谢您的帮助。
修改
通过dnalow注释,我将轴参数添加为0并且命令正常工作:
gdal_calc.py -A red.tif --A_band=2 -B green.tif --B_band=2 -C blue.tif --C_band=2 --outfile=mask.tif --calc="255*any([A==0,B==0,C==0],axis=0)" --NoDataValue=255