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

  • Java Double 变量有奇怪的值[重复]

    这个问题在这里已经有答案了 可能的重复 Java 中的浮点运算不能产生精确的结果 我正在做这个简单的除法 但我得到了一个非常奇怪的输出 double a 60 1 2 1 1 gt 600 0000000000008 什么时候应该是600
  • 如何删除具有任何零值的行

    我有一个问题需要解决如何删除 R 中具有零值的行 另一方面 我可以使用na omit 删除所有 NA 值或使用complete cases 删除包含 NA 值的行 有谁知道如何删除 R 中具有零值的行 例如 Before DateTime
  • 为什么java中整数除法? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 据我了解 在Java中 如果我将两个整数相除 如果结果不是整数 则小数部分将被截断 并且我会从除法中得到整数结果 这对我来说毫无意义 我想知道我是否可以深入了解为什么 Java 是这样设计
  • 两个数相除总是等于零?

    在我的 Xna 游戏中 我试图将我的游戏场缩放到它运行的屏幕上 为此 我使用比例来查找实际窗口相对于我的游戏区域缩放的百分比 为此 我将实际宽度除以虚拟宽度 float percent realViewport Width this vie
  • 具有常量整数除数的高效浮点除法

    最近question https stackoverflow com questions 35506226 will the compiler optimize division into multiplication 是否允许编译器用浮点
  • 如何保留 int 变量的前导零?

    下面是一段代码 是功能性解密和加密程序的一部分 while checkvar lt maxvar is set to lt as maxvar is 1 to high for the index of var output append
  • 快速除以 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
  • 具有 32/16 位除法的处理器上的 64/32 位除法

    我的处理器 http www microchip com wwwproducts Devices aspx dDocName en532298 一个没有 FPU 和整数数学的小型 16 位微控制器 只有 16 16 除法和 32 16 除法
  • 当分母中的元素可能为零时,有效的逐元素矩阵除法

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

    我有两个稀疏矩阵 E 和 D 它们在相同位置具有非零条目 现在我想要拥有E D作为稀疏矩阵 仅在 D 非零时定义 例如 采用以下代码 import numpy as np import scipy E full np matrix 1 45
  • Python 中的截断除法与底除法

    为了建立上下文 我仅讨论整数算术 对于大整数 因此不能选择浮点 并且使用负数 因此取整除法和截断除法之间的差异很重要 当对负整数执行除法时 典型的硬件和 C 系列编程语言会给出截断的结果 例如1 2 0 Python 2 给出了底数结果 例
  • 无法连接到任何 X 显示器:Google Colab 运行时

    我现在正在研究分类问题 并尝试在线完成所有工作 而无需访问本地计算机 因此 我已将数据添加到驱动器并将驱动器安装在 Colab 上 现在我想注释我的数据并决定使用LabelImg https github com tzutalin labe
  • Python:确定数字是否为平方、立方等的函数[重复]

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

    这个问题在这里已经有答案了 查看编译器生成的 x86 程序集 我注意到 无符号 整数除法有时会实现为整数乘法 这些优化似乎遵循以下形式 value n gt value 0xFFFFFFFF n 1 0x100000000 例如 除以 9
  • 为什么 C 给我的答案与我的计算器不同?

    我在这段代码中遇到了一个奇怪的问题 legibIndex 206 385 84 6 countSylb countWord 1 015 countWord countSent 这是给定文本文件的易读性指数的计算 由于这是一项家庭作业 我们被
  • 在C语言中,NULL指针和指向0的指针有区别吗?如果是这样,那又怎样?

    在C语言中 NULL指针和指向0的指针有什么区别 ISO IEC 9899 TC2 中规定6 3 2 3 Pointers 3 值为 0 的整型常量表达式 或这样的表达式 强制转换为 void 类型 称为空指针常量 55 如果 null 指
  • 安全浮点除法

    我的代码中有一些地方我想确保 2 个任意浮点数 32 位单精度 的除法不会溢出 目标 编译器不保证 足够明确 对 INF INF 的良好处理 并且 不完全保证 IEEE 754 的异常值 可能未定义 并且目标可能会改变 另外 我无法对这几个
  • Java中的整数除法[重复]

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

    为什么当我这样做时 select CAST 1 AS DECIMAL 38 28 CAST 1625625 AS DECIMAL 38 28 我得到 0 吗 但是当我得到 0 时 select CAST 1 AS DECIMAL 20 10
  • MySQL 过去 12 个月的月度销售情况,包括没有销售的月份

    SELECT DATE FORMAT date b AS month SUM total price as total FROM cart WHERE date lt NOW and date gt Date add Now interva

随机推荐