-
Notifications
You must be signed in to change notification settings - Fork 0
/
png_to_tif.py
38 lines (33 loc) · 1.54 KB
/
png_to_tif.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import os
import argparse
import cv2
import rasterio
import numpy as np
def convert(input_path, output_path, profile_path):
for input_name in os.listdir(input_path):
input = cv2.imread(os.path.join(input_path, input_name))
b, g, r = cv2.split(input)
channel_image = np.zeros((input.shape[0], input.shape[1], 10), dtype=np.int32)
channel_image[..., 6] = r
channel_image[..., 5] = g
channel_image[..., 1] = b
channel_image = channel_image.transpose((2, 0, 1))
background_name = input_name.split('-')[0] + '.tif'
profile = rasterio.open(os.path.join(profile_path, background_name)).profile
new_dataset = rasterio.open(
os.path.join(output_path, input_name.split('.')[0] + '.tif'),
'w',
**profile
)
new_dataset.write(channel_image*257)
new_dataset.close()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--input_path', required = True, help = 'Path to the directory containing the PNG images to convert')
parser.add_argument('--output_path', required = True, help = 'Path to the directory the TIF outputs will be stored')
parser.add_argument('--profile_path', required = True, help = 'Path to the directory containing the original background profile (the original dataset landsat_patches directory)')
args = parser.parse_args()
input_path = args.input_path
output_path = args.output_path
profile_path = args.profile_path
convert(input_path, output_path, profile_path)