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 问题定位和解决方案 的相关文章

  • 不使用内置类型和运算符的 Python 复数除法

    我必须实现一个名为ComplexNumbers它代表一个复数 我是不允许使用内置类型为了那个原因 我已经覆盖了运算符 add sub mul abs str 它允许执行基本操作 但现在我不得不覆盖 div 操作员 允许使用 我在用着floa
  • 两个数相除总是等于零?

    在我的 Xna 游戏中 我试图将我的游戏场缩放到它运行的屏幕上 为此 我使用比例来查找实际窗口相对于我的游戏区域缩放的百分比 为此 我将实际宽度除以虚拟宽度 float percent realViewport Width this vie
  • 如何将一个计算列的每一行除以另一个计算列的总和?

    我无法使用此示例数据得到正确的除法 Calculated column Another calc column 48 207 257 370 518 138 489 354 837 478 1 005 648 1 021 2 060 1 4
  • 更改 JSlider 的可显示标签?

    我有一个 JSlider 最小值为 0 最大值为 10 000 我将主要刻度线设置为 1 000 如果我现在绘制标签 它们将显示为 0 1000 2000 3000 4000 等 我希望显示的是 0 1 2 3 4 5 等 是完成这项任务的
  • Java在浮点运算中保持尾随0

    代码 Float f Float parseFloat 1 80 System out println f prints 1 8 在屏幕上 我需要将 0 保留在浮点值 Float f 中以进行某些验证 我该怎么做呢 你正在混淆一个数值和它的
  • 数字 0 在二进制浮点数格式中是什么样子?

    浮点格式 IEEE 有 32 位 第 1 位用于符号 之后 8 位用于有偏差指数 最后 23 位用于尾数 在这个尾数中 第一个 1 始终是 1 始终隐藏 这引出了我的问题 数字 0 在这种格式中是什么样子的 因为如果指数为 0 则该数字将始
  • 检查一个数是否能被3整除[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 编写代码来确定一个数字是否能被 3 整除 该函数的输入是single位 0 或 1 如果到目前为止收到的数字是可被 3 整除的数字的二进制表示形式 则
  • 如果整数以前导零开头,为什么 JSON 无效?

    我正在将一些 JSON 文件导入到 Parse com 项目中 但不断收到错误 无效的键 值对 它指出有一个意想不到的 8 这是我的 JSON 的示例 Manufacturer Manufacturer Model THIS IS A ST
  • 具有 32/16 位除法的处理器上的 64/32 位除法

    我的处理器 http www microchip com wwwproducts Devices aspx dDocName en532298 一个没有 FPU 和整数数学的小型 16 位微控制器 只有 16 16 除法和 32 16 除法
  • 汇编器 64b 除法

    我需要一些简单的方法来在 x86 的汇编器中除以 64b 无符号整数 我的号码保存在两个 32b 寄存器 EDX EAX 中 我需要将结果放回 EDX EAX 因数为 32b 整数 请给一些代码 如果我正确解释你的问题 特别是这部分Fact
  • 除法结果不正确

    我有一个时间计算器 多年来一直运行良好 然而 一直困扰我的一件事是 如果使用小数秒 结果将成为浮点 错误 的牺牲品 所以 我最近改用这个 BigDecimal 库 https github com dtrebbien BigDecimal
  • 预期结果在 1 和 0 之间的除法总是给出 0 [重复]

    这个问题在这里已经有答案了 可能的重复 C 中整数除法的行为是什么 https stackoverflow com questions 3602827 what is the behavior of integer division in
  • 稀疏矩阵的元素除法,忽略 0/0

    我有两个稀疏矩阵 E 和 D 它们在相同位置具有非零条目 现在我想要拥有E D作为稀疏矩阵 仅在 D 非零时定义 例如 采用以下代码 import numpy as np import scipy E full np matrix 1 45
  • bcdiv 使用带有科学记数法的非常小的浮点导致“除以零”错误

    使用 bcdiv 我无法使用科学记数法除以小浮点数 工作代码 bcscale 30 a 1 b 0 00000001 result bcdiv a b var dump result 结果是 字符串 20 100000000 0000000
  • 为什么 JavaScript 中“0 === -0”为真?

    在最近的一篇文章中http wtfjs com http wtfjs com 一位作者在没有解释的情况下写了以下内容 这恰好是真实的 0 0 returns true 我对 运算符的理解是 如果操作数指向同一个对象 它会返回 true 此外
  • 无法连接到任何 X 显示器:Google Colab 运行时

    我现在正在研究分类问题 并尝试在线完成所有工作 而无需访问本地计算机 因此 我已将数据添加到驱动器并将驱动器安装在 Colab 上 现在我想注释我的数据并决定使用LabelImg https github com tzutalin labe
  • 在Python中,整数除法中向零舍入的好方法是什么?

    1 2 gives 0 正如它应该 然而 1 2 gives 1 但我希望它向 0 舍入 即我希望 1 2 为 0 无论它是正数还是负数 最好的方法是什么 进行浮点除法 然后转换为 int 不需要额外的模块 Python 3 gt gt g
  • 无法从双精度转换为浮点

    在我的数据库中 我有几个 真实 字段 结构如下 database execSQL create table TABLE LOGS COLUMN ID integer primary key autoincrement COLUMN ID D
  • 在 PHP 中查找数字的倍数

    我想在 PHP 中找到一个数字的所有倍数 我正在使用这样的东西 if count 20 计算出如果 count不等于20 但我还需要这个脚本来检查是否 count不等于 20 40 60 80 100 120 140 160 等 有任何想法
  • 在 Visual Studio 2017 中变量模板中的除法返回零

    这大概是一个视觉工作室2017 questions tagged visual studio 2017与此问题相关的错误 Visual Studio 中 Lambda 的模板变量错误 https stackoverflow com q 49

随机推荐