iamzhanghay

问题描述

之前标注好的文件,标注有bbox和若干points。选择Open Dir打开图像目录,选择Change Output Dir选择json文件所在目录。发现有些图片能正常显示标注后的状态。而有的图片弹窗报错,error opening file且无法显示图像

排查问题

这些图片和标注是从原来不同文件夹移动到现在文件夹的。会不会是这个问题?
经过对比不能打开的图片的json文件,发现其路径不对。json中ImagePath是相对路径,从原来文件夹复制到现有文件夹。label根据json文件中ImagePath指示的图片路径找不到图片,所以报错。
但是发现一些路径不对的json文件也能正常打开图像,再次对比发现,这些能打开的json文件在标注时保存了IamgeData信息。

结论

标注结束后能打开标注后图像的充分条件为:图像对应json文件中ImagePath正确或者json文件保存了ImageData数据

修改

将所有json文件中ImagePath改正确

参考代码

#encoding=utf-8
#author:zhanghay
#time:2022/6/28

'''
目的:
    json文件中imagePath值不对要改过来
    具体不对:
        路径不对
逻辑:
    读取json
    获取imagePath值
    整改imagePath值(字典)
    字典写入json
其他:
    遍历文件夹json文件
'''
import json
import os

def load_json(json_dir):
    with open(json_dir, 'r', encoding='utf8') as js:
        data = json.load(js)
        js.close()
    return data

def rewrite_imgpath(json_dir,data):
    imgpath = data['imagePath'] #.split('\\')[-1]
    imgname=imgpath.split('\\')[-1]
    rewrie_imgpath='   '+imgname     #正确的路径
    data['imagePath']=rewrie_imgpath
    with open(json_dir, "w") as f:
        json.dump(data, f)
        f.close()

if __name__ == '__main__':
    for file in os.listdir(" "):   #json文件所在文件夹
        json_dir=os.path.join(" ",file)  #json文件所在文件夹
    
        data=load_json(json_dir)
        rewrite_imgpath(json_dir=json_dir,data=data)

分类:

技术点:

相关文章: