問題
做目標檢測數據集的時候,需要用到目標檢測標記工具。目前使用的是labelImg
,該項目地址:
https://github.com/tzutalin/labelImg
使用方法在網上搜索有一大堆,這裏不做過多的介紹。
使用頁面如下所示:
在使用的過程中,框選相關部分後,程序閃退,然後終端提示錯誤信息如下:
xcen = float((xmin + xmax)) / 2 / self.imgSize[1]
ZeroDivisionError: float division by zero
網上查詢相關的issue,有人提出同樣的問題,下面有相應的回答。
解決方法
問題出現的原因是該軟件在打開某些圖片時候,背景爲透明的那種,會出現size爲0的情況,解決辦法是用opencv打開後,再重新保存覆蓋原文件即可,代碼如下:
import sys
import cv2
input_file = sys.argv[1] # 支持批量操作
with open(input_file, 'r') as f:
for line in f:
img_name = line.rstrip('\n')
img = cv2.imread(img_name)
save_path = img_name
cv2.imwrite(save_path, img) # 可以加quality參數
上述代碼支持批量操作,直接將整個文件夾下的文件名輸入進去即可。進行覆蓋保存,再次打開軟件處理這些圖片,不會報這一個錯誤