labelImg ZeroDivisionError: float division by zero 問題定位和解決方案

一、前沿

labelImg的使用和安裝這裏不過多講解,網上一堆教程。

二、問題以及解決方案

2.1 問題如下:

Traceback (most recent call last):
  File "g:\mytoolsinstall\anaconda3\lib\site-packages\labelImg\labelImg.py", line 1250, in openNextImg
    self.saveFile()
  File "g:\mytoolsinstall\anaconda3\lib\site-packages\labelImg\labelImg.py", line 1290, in saveFile
    self._saveFile(savedPath)
  File "g:\mytoolsinstall\anaconda3\lib\site-packages\labelImg\labelImg.py", line 1322, in _saveFile
    if annotationFilePath and self.saveLabels(annotationFilePath):
  File "g:\mytoolsinstall\anaconda3\lib\site-packages\labelImg\labelImg.py", line 802, in saveLabels
    self.lineColor.getRgb(), self.fillColor.getRgb())
  File "g:\mytoolsinstall\anaconda3\lib\site-packages\libs\labelFile.py", line 83, in saveYoloFormat
    writer.save(targetFile=filename, classList=classList)
  File "g:\mytoolsinstall\anaconda3\lib\site-packages\libs\yolo_io.py", line 70, in save
    classIndex, xcen, ycen, w, h = self.BndBox2YoloLine(box, classList)
  File "g:\mytoolsinstall\anaconda3\lib\site-packages\libs\yolo_io.py", line 37, in BndBox2YoloLine
    xcen = float((xmin + xmax)) / 2 / self.imgSize[1]
ZeroDivisionError: float division by zero

2.2 定位原因

2.2.0、從代碼來看 主要是:xcen = float((xmin + xmax)) / 2 / self.imgSize[1] ZeroDivisionError: float division by zero 這個裏邊 self.imgSize[1]==0
2.2.1、而這行代碼的源碼位置在:
在這裏插入圖片描述
2.2.2、那麼便去尋找 調用 YOLOWriter 類,傳遞參數的函數
在這裏插入圖片描述
結論:

不難懷疑:QImage 讀圖出現了 問題,解決方案 使用 openCv 替換掉 QImage

2.3 解決問題

labelFile.py文件裏邊修改

image = QImage()
image.load(imagePath)
imageShape = [image.height(), image.width(),
              1 if image.isGrayscale() else 3]
if imageShape[0] == 0:  // 如果讀圖 高/寬 爲 0 那麼便再用 cv2重新讀圖。
    img = cv2.imread(imagePath)
    imageShape = [img.shape[0], img.shape[1], img.shape[2]]

三、結論

問題:爲什麼 QImage 讀圖 寬高 全爲 0?
    網上給出原因是 打開某些圖片時候,背景爲透明的那種,會出現size爲 0 的情況。
結論:
    這邊還是認爲自己可以根據 源碼先去定位原因,然後找出解決方案

四、參考鏈接:

網上查詢相關的issue,有人提出同樣的問題,下面有相應的回答。

https://github.com/tzutalin/labelImg/issues/386
https://github.com/tzutalin/labelImg/issues/462
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章