wkentaro / labelme

Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).
https://labelme.io
Other
13.52k stars 3.41k forks source link

Error opening file, a bytes-like object is required,not 'NoneType' #1336

Open tty0013 opened 1 year ago

tty0013 commented 1 year ago

Provide environment information

/home/tty0016/software/miniconda3/bin/python Python 3.10.12 labelme 5.2.1

What OS are you using?

Ubuntu 20.04.4

Describe the Bug

The error occurs when I tried to open previous dataset with labelme:

Error opening file,
a bytes-like object is required,not 'NoneType'

I notice that the following code of labelme links the parent directory path of the json file and the imagePath in the json file to get the relative path from the json file to the image, and load the image:

if data["imageData"] is not None:
    imageData = base64.b64decode(data["imageData"])
    if PY2 and QT4:
        imageData = utils.img_data_to_png_data(imageData)
else:
    # relative path from label file to relative path from cwd
    imagePath = osp.join(osp.dirname(filename), data["imagePath"])
    imageData = self.load_image_file(imagePath)

Because datasets are actually often moved in many scenarios, imagePath in json files is out of date most of the time. I think this is the cause of the above error. Under the current image loading strategy, if you split the dataset, you will no longer be able to open it normally with labelme.

In another data annotation tool, labelImg, you can open a dataset whose directory structure has changed, as long as you open the image directory and label directory in ui, can this be achieved in labelme?

Expected Behavior

By specifying the path to the image and the path to the json label file in the ui interface or on the command line, open a dataset whose directory structure is already different from that of the annotation to view the annotation.

To Reproduce

This error occurs when you try to use labelme to open any dataset whose directory structure has changed.

ahiyantra commented 2 weeks ago

I faced the same issue. My conclusion is related to yours.

A link to my description of the problem in an older thread.