第一章PIL单通道图像处理
将单通道图像以彩色图像的形式进行保存主要使用了PIL库
palette_data = [***]:可以进行自定义设置
代码如下:
from PIL import Image
label = np.asarray(Image.Open(r"*.tif"),np.uint8)
tmp_image = Image.fromarray(tmp_image, "P")
palette_data = [0, 0, 0, 255, 255, 255, 255, 69, 0, 0, 255, 127] # 调色板.三个数字唯一组RGB色彩表示
tmp_image.putpalette(palette_data)
tmp_image.save(r"*.png")
遇到的实际问题是将矢量标注转换为单波段的栅格标注时,影像在Arcgis中显示的像素值是正常的,但是使用opencv和PIL读取时,像素值确实被拉伸过的。例如1被拉伸为70;但当使用gdal读取影像时,利用ReadAsArray(),得到的数组确实正确的。
分析属性文件,发现单波段图像的像素值确实是被拉伸的,但是.xml文件中记录者图像原始的栅格属性信息
<PAMDataset>
<PAMRasterBand band="1">
<Histograms>
<HistItem>
<HistMin>0</HistMin>
<HistMax>2</HistMax>
<BucketCount>256</BucketCount>
<IncludeOutOfRange>1</IncludeOutOfRange>
<Approximate>0</Approximate>
<HistCounts>64559|0|977|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0</HistCounts>
</HistItem>
</Histograms>
<Metadata>
<MDI key="STATISTICS_EXCLUDEDVALUES"/>
<MDI key="STATISTICS_MAXIMUM">2</MDI>
<MDI key="STATISTICS_MEAN">0.029815673828125</MDI>
<MDI key="STATISTICS_MINIMUM">0</MDI>
<MDI key="STATISTICS_SKIPFACTORX">1</MDI>
<MDI key="STATISTICS_SKIPFACTORY">1</MDI>
<MDI key="STATISTICS_STDDEV">0.24237010872132</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>
.twf文件中记录的栅格信息
2.0000000000
0.0000000000
0.0000000000
-2.0000000000
39478349.1866334751
4432878.0495860688
就这卡了我半天时间,记录一下避免踩坑。