Skip to content

Commit

Permalink
Fix image orienation in instance_segmentation/labelme2voc.py
Browse files Browse the repository at this point in the history
  • Loading branch information
wkentaro committed May 25, 2020
1 parent 9b5bb5a commit 487e14b
Showing 1 changed file with 65 additions and 68 deletions.
133 changes: 65 additions & 68 deletions examples/instance_segmentation/labelme2voc.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@

import argparse
import glob
import json
import os
import os.path as osp
import sys

import imgviz
import numpy as np
import PIL.Image

import labelme

Expand Down Expand Up @@ -66,73 +64,72 @@ def main():
f.writelines('\n'.join(class_names))
print('Saved class_names:', out_class_names_file)

for label_file in glob.glob(osp.join(args.input_dir, '*.json')):
print('Generating dataset from:', label_file)
with open(label_file) as f:
base = osp.splitext(osp.basename(label_file))[0]
out_img_file = osp.join(
args.output_dir, 'JPEGImages', base + '.jpg')
out_cls_file = osp.join(
args.output_dir, 'SegmentationClass', base + '.npy')
out_clsp_file = osp.join(
args.output_dir, 'SegmentationClassPNG', base + '.png')
if not args.noviz:
out_clsv_file = osp.join(
args.output_dir,
'SegmentationClassVisualization',
base + '.jpg',
)
out_ins_file = osp.join(
args.output_dir, 'SegmentationObject', base + '.npy')
out_insp_file = osp.join(
args.output_dir, 'SegmentationObjectPNG', base + '.png')
if not args.noviz:
out_insv_file = osp.join(
args.output_dir,
'SegmentationObjectVisualization',
base + '.jpg',
)

data = json.load(f)

img_file = osp.join(osp.dirname(label_file), data['imagePath'])
img = np.asarray(PIL.Image.open(img_file))
PIL.Image.fromarray(img).save(out_img_file)

cls, ins = labelme.utils.shapes_to_label(
img_shape=img.shape,
shapes=data['shapes'],
label_name_to_value=class_name_to_id,
for filename in glob.glob(osp.join(args.input_dir, '*.json')):
print('Generating dataset from:', filename)

label_file = labelme.LabelFile(filename=filename)

base = osp.splitext(osp.basename(filename))[0]
out_img_file = osp.join(
args.output_dir, 'JPEGImages', base + '.jpg')
out_cls_file = osp.join(
args.output_dir, 'SegmentationClass', base + '.npy')
out_clsp_file = osp.join(
args.output_dir, 'SegmentationClassPNG', base + '.png')
if not args.noviz:
out_clsv_file = osp.join(
args.output_dir,
'SegmentationClassVisualization',
base + '.jpg',
)
ins[cls == -1] = 0 # ignore it.

# class label
labelme.utils.lblsave(out_clsp_file, cls)
np.save(out_cls_file, cls)
if not args.noviz:
clsv = imgviz.label2rgb(
label=cls,
img=imgviz.rgb2gray(img),
label_names=class_names,
font_size=15,
loc='rb',
)
imgviz.io.imsave(out_clsv_file, clsv)

# instance label
labelme.utils.lblsave(out_insp_file, ins)
np.save(out_ins_file, ins)
if not args.noviz:
instance_ids = np.unique(ins)
instance_names = [str(i) for i in range(max(instance_ids) + 1)]
insv = imgviz.label2rgb(
label=ins,
img=imgviz.rgb2gray(img),
label_names=instance_names,
font_size=15,
loc='rb',
)
imgviz.io.imsave(out_insv_file, insv)
out_ins_file = osp.join(
args.output_dir, 'SegmentationObject', base + '.npy')
out_insp_file = osp.join(
args.output_dir, 'SegmentationObjectPNG', base + '.png')
if not args.noviz:
out_insv_file = osp.join(
args.output_dir,
'SegmentationObjectVisualization',
base + '.jpg',
)

img = labelme.utils.img_data_to_arr(label_file.imageData)
imgviz.io.imsave(out_img_file, img)

cls, ins = labelme.utils.shapes_to_label(
img_shape=img.shape,
shapes=label_file.shapes,
label_name_to_value=class_name_to_id,
)
ins[cls == -1] = 0 # ignore it.

# class label
labelme.utils.lblsave(out_clsp_file, cls)
np.save(out_cls_file, cls)
if not args.noviz:
clsv = imgviz.label2rgb(
label=cls,
img=imgviz.rgb2gray(img),
label_names=class_names,
font_size=15,
loc='rb',
)
imgviz.io.imsave(out_clsv_file, clsv)

# instance label
labelme.utils.lblsave(out_insp_file, ins)
np.save(out_ins_file, ins)
if not args.noviz:
instance_ids = np.unique(ins)
instance_names = [str(i) for i in range(max(instance_ids) + 1)]
insv = imgviz.label2rgb(
label=ins,
img=imgviz.rgb2gray(img),
label_names=instance_names,
font_size=15,
loc='rb',
)
imgviz.io.imsave(out_insv_file, insv)


if __name__ == '__main__':
Expand Down

0 comments on commit 487e14b

Please sign in to comment.