labelImg ZeroDivisionError: float division by zero 问题定位和解决方案

2023-05-16

一、前沿

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

labelImg ZeroDivisionError: float division by zero 问题定位和解决方案 的相关文章

  • 使用 PHP 删除缩写日期中的前导零

    我想知道是否有办法使用 PHP 将此日期格式 01 08 86 1986 年 1 月 8 日 更改为此格式 1 8 86
  • 使用python计算输入的位数

    我正在尝试计算输入的位数 但是 每当我输入10 or 11或任意两位数 输出为325 为什么不起作用 inputnumber int input countnumber inputnumber digitcount 0 while coun
  • 为什么 Python 3.4 对于大数除法给出错误的答案,如何测试整除性? [复制]

    这个问题在这里已经有答案了 在我的程序中 我使用除法来测试结果是否是整数 我正在测试整除性 但是 我得到了错误的答案 这是一个例子 print int 724815896270884803 61 给出 11882227807719424 p
  • 使用过滤功能时,如何按原样返回空白单元格而不是打印为零

    在使用过滤功能时参考图像中显示的数据并获取返回值 如何在使用过滤功能时按原样返回空白单元格而不是打印为零 FILTER A2 C13 A2 A13 E1 在使用过滤功能时参考图像中显示的数据并获取返回值 如何在使用过滤功能时按原样返回空白单
  • Java在浮点运算中保持尾随0

    代码 Float f Float parseFloat 1 80 System out println f prints 1 8 在屏幕上 我需要将 0 保留在浮点值 Float f 中以进行某些验证 我该怎么做呢 你正在混淆一个数值和它的
  • Doctest 无法识别 __future__.division

    我写了以下文档测试x doctest This is something gt gt gt x 3 4 foo bar something else gt gt gt from future import division gt gt gt
  • 如何在 Banana PI ZERO M2 上启用 eth0

    默认情况下 BPI ZERO M2 上禁用 eth0 这里我们将展示启用它 解决方案是创建一个 dtdo 文件并将其放在正确的位置 1 创建文本源文件 bananapi m2 zero eth0 dts dts v1 plugin mode
  • quotRem 和 divMod 之间的区别什么时候有用?

    来自哈斯克尔报告 quot rem div 和 mod 类 如果 y 是 方法满足这些定律 非零 x quot y y x rem y x x div y y x mod y x quot整数除法是否被截断 趋于零 而结果div被截断为负无
  • 快速除以 10ˣ

    In my program I use a lot of integer division by 10x and integer mod function of power 10 例如 unsigned int64 a 12345 a a
  • 当分母中的元素可能为零时,有效的逐元素矩阵除法

    我正在使用 numpy 使用 Python 2 7 6 进行编程 我在两个 numpy 矩阵之间进行了划分V np dot W H 有时 分母的某些单元格值等于 0 因此我会收到运行时错误 我想以有效的方式实施安全划分 我如何编写执行矩阵除
  • C 中的有符号除法

    我正在阅读书中有关 C 可移植性的部分C Traps and Pitfalls安德鲁 科尼格 关于整数除法 q a b r a b 如果a是负数 显然是提醒r可以是负数或正数 同时满足属性 q b r a 通常我会期望r如果股息为负a是负数
  • 如何正确地除微小的双精度数而没有精度误差?

    我正在尝试诊断并修复一个错误 该错误归结为当 X 和 Y 很小时 X Y 会产生不稳定的结果 在这种情况下 cx和patharea都平滑增加 它们的比率在大数时是平滑的渐近线 但在 小 数时是不稳定的 显而易见的第一个想法是我们已经达到了浮
  • Python 浮点除法不精确[重复]

    这个问题在这里已经有答案了 可能的重复 Python float str 浮动怪异 https stackoverflow com questions 1778368 python float str float weirdness Pyt
  • 为什么 JavaScript 中“0 === -0”为真?

    在最近的一篇文章中http wtfjs com http wtfjs com 一位作者在没有解释的情况下写了以下内容 这恰好是真实的 0 0 returns true 我对 运算符的理解是 如果操作数指向同一个对象 它会返回 true 此外
  • PHP 在单位数字之前预先添加前导零,动态 [重复]

    这个问题在这里已经有答案了 PHP 是否有一种快速 即时的方法来测试单个字符串 然后在前面添加前导零 Example year 11 month 4 stamp year add single zero if needed month Im
  • Python:确定数字是否为平方、立方等的函数[重复]

    这个问题在这里已经有答案了 我的简单问题是创建一个函数来确定数字 N 是否可以写成a n对于某些给定的 n 即我需要检查是否N 1 n 是一个整数 不知何故 这个函数会产生错误的结果 def is power N n r float N 1
  • Java中的整数除法[重复]

    这个问题在这里已经有答案了 这感觉像是一个愚蠢的问题 但我在 Java 文档中找不到答案 如果我声明两个 int 然后将它们相除 到底发生了什么 他们是否转换为floats doubles首先 划分 然后投射回integer 或者除法是作为
  • 为什么浮点数有符号零?

    为什么双打有 0也 0 其背景和意义是什么 0 通常 被视为0 当一个negative浮点数非常接近零 可以考虑0 要明确的是 我指的是算术下溢 http en wikipedia org wiki Arithmetic underflow
  • 小数除以小数并得到零

    为什么当我这样做时 select CAST 1 AS DECIMAL 38 28 CAST 1625625 AS DECIMAL 38 28 我得到 0 吗 但是当我得到 0 时 select CAST 1 AS DECIMAL 20 10
  • INT_MIN % -1 是否会产生未定义的行为?

    gcc 生成浮动代码 引发SIGFPE对于以下代码 include

随机推荐