话不多说,直接上代码:
def tif_to_bw(input_path, output_path):
# 获取文件夹下所有tif文件名称,并存入列表
file_name_list = os.listdir(input_path)
for name in file_name_list:
# 获取图片文件全路径
if name.endswith(".tif") == 0:
continue
img_path = os.path.join(input_path, name)
# 获取文件名,不包含扩展名
filename = os.path.splitext(name)[0]
savefilename = filename+".png" # 如果要转为jpg,把这里修改为jpg即可
# 文件存储全路径
savepath = os.path.join(output_path, savefilename)
# 打开TIF图像
tif_dataset = gdal.Open(img_path)
# 获取图像的宽度和高度
width = tif_dataset.RasterXSize
height = tif_dataset.RasterYSize
# 读取图像数据
tif_band = tif_dataset.GetRasterBand(1)
tif_data = tif_band.ReadAsArray(0, 0, width, height)
# 将图像数据转换为灰度模式
# 进行二值化处理
# 保存为JPG格式
tif_data = np.uint8(tif_data)
tif_data[tif_data == 1] = 255
outputImg = Image.fromarray(tif_data)
outputImg.save(savepath)
print("图片:【", filename, "】完成转换")
print("完成所有图片转换!")
之前转的jpg/png图像原本白色的部分一直是红色的,debug后才发现值不是255是1,遂加了 tif_data[tif_data == 1] = 255这行代码,终于显示正常。希望对大家有所帮助!