label问题排查:打不开标注好的图像

问题描述

之前标注好的文件,标注有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) 

发表评论

相关文章