label問題排查:打不開標註好的影像

zt001發表於2022-06-29

問題描述

之前標註好的檔案,標註有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)

相關文章