import json import os.path as osp import imgviz import labelme.utils def assert_labelfile_sanity(filename): assert osp.exists(filename) data = json.load(open(filename)) assert "imagePath" in data imageData = data.get("imageData", None) if imageData is None: parent_dir = osp.dirname(filename) img_file = osp.join(parent_dir, data["imagePath"]) assert osp.exists(img_file) img = imgviz.io.imread(img_file) else: img = labelme.utils.img_b64_to_arr(imageData) H, W = img.shape[:2] assert H == data["imageHeight"] assert W == data["imageWidth"] assert "shapes" in data for shape in data["shapes"]: assert "label" in shape assert "points" in shape for x, y in shape["points"]: assert 0 <= x <= W assert 0 <= y <= H