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