遥感影像标签的数值问题。
拿到手的标签图像,是二分类形式,分为0和1。
这样的形式,不能直接在win10打开。双击图像文件后,如下:
但是可以在QGIS可视化。在QGIS可视化如下:
为什么会这样?大概是因为win自带的图像打开器只支持bit8的图像。即数值范围是0-255。
简单的对标签文件进行数值修改是容易的。
代码如下 :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/11/28 22:44
# @File : label_process.py
'''
将标签文件数值 1 转为 255
'''
import numpy as np
from PIL import Image
import os
import globclass LabelProcess(object):def __init__(self, in_path, out_path):self.in_path = in_pathself.out_path = out_pathos.makedirs(out_path, exist_ok=True)def process(self) -> None:"""将标签文件数值 1 转为 255"""files = glob.glob(self.in_path+'\*.png')for i, file in enumerate(files):img = Image.open(file)img_array = np.array(img)img_array[img_array==1] = 255out_img = Image.fromarray(img_array)out_img.save(self.out_path+'\\'+os.path.basename(file))print("\r数值 1 转为 255: [{0:50s}] {1:.1f}%".format('#' * int(i / len(files) * 50),i / len(files) * 100), end="",flush=True)
if __name__ == '__main__':in_path = r'D:\labels'out_path= r'D:\label'A = LabelProcess(in_path, out_path)A.process()print()
修改后的标签文件如下:
是否要将标签中的1转为 255,是要根据你的训练模型中的代码决定的。
我现在的使用的代码是基于github上的一个开源项目,原作者写好了标签数值格式是0-255。我不想过多修改他的代码。综合考虑下,那只能修改标签文件的数值。