labelImg无法保存classes文件的解决方法(IndexError: list index out of range)

这篇具有很好参考价值的文章主要介绍了labelImg无法保存classes文件的解决方法(IndexError: list index out of range)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

憨憨程序员,其实是有做读取旧classes保存到新classes功能的,但是看完代码发现就启动程序初始化的时候调用了一次,change save dir的时候根本没有调用。

我实力有限,只能靠比较愚蠢的方法解决了。

首先找到我们安装labelImg的地址,比如我就是放到conda环境里面,所以在这个目录下。不同安装会有不同目录所以只能做参考。

labelimg indexerror: list index out of range,windows,python,YOLO,目标检测如上图,进入环境envs文件夹后,选择你安装labelImg的环境,进入Lib/site-packages/labelImg文件夹。

labelimg indexerror: list index out of range,windows,python,YOLO,目标检测

用IDE啥的,打开labelImg.py

翻到1230行(版本1.8.5),

def change_save_dir_dialog(self, _value=False):

这个函数里面,改成这个样子:

def change_save_dir_dialog(self, _value=False):
    if self.default_save_dir is not None:
        path = ustr(self.default_save_dir)
    else:
        path = '.'

    dir_path = ustr(QFileDialog.getExistingDirectory(self,
                                                     '%s - Save annotations to the directory' % __appname__, path,  QFileDialog.ShowDirsOnly
                                                     | QFileDialog.DontResolveSymlinks))

    if dir_path is not None and len(dir_path) > 1:
        self.default_save_dir = dir_path
        temp0=(self.default_save_dir+"/_classes.txt")
        with open(self.default_save_dir+"/classes.txt","r",encoding='mbcs') as tempfile0:
            allinclasses=tempfile0.readlines()
        with open(temp0,"w",encoding="utf-8")as _tempfile0:
            for line in allinclasses:
                _tempfile0.write(line)
        # print(temp0,type(temp0))
        self.load_predefined_classes(temp0)# outway!!


    self.statusBar().showMessage('%s . Annotation will be saved to %s' %
                                 ('Change saved folder', self.default_save_dir))
    self.statusBar().show()

具体实现方式就是,把打开文件调用的那个函数拿过来,然后在改变输出文件夹的时候再调用一遍。

为什么会这么复杂呢?原因就是很多人可能会出现:

UnicodeDecodeError: ‘gbk’ codec can’t decode byte xxxxx………………

这种情况。因为默认classes的编码格式是ANSI,但是正常写txt文件用的是utf-8。所以classes文件必须是ansi才行。

但是啊但是,这个憨憨函数调用,要求输入的是utf-8的txt文件。于是我直接就创建一个_classes文件,用utf-8的格式,然后再把classes里面的东西全部搬进来,很原始的方法,但是很有效。

需要注意的是,我的水平有限,它的鲁棒性并没有那么高,所以,只有在点击change_save_dir按钮以后,它才会识别classes文件。如果是直接点open dir自动的标签,还是会出错的。

因此,强烈建议复制一个classes.txt作为备份,原因是windows创建ansi格式的txt文件并不怎么方便,自己创建的classes.txt是默认utf-8的。文章来源地址https://www.toymoban.com/news/detail-856840.html

到了这里,关于labelImg无法保存classes文件的解决方法(IndexError: list index out of range)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 取消Async Stack Traces无法解决Sharing is only supported for boot loader classes时的解决方法

    报错问题: 搜到的解决方法(不能用版): , 目前网上大多数解决方法都是说取消idea中此处的勾选,但是我在这里取消勾选后,警告仍然存在。于是接下来通过不断的查资料对这个警告也有了一定的认识,看到这里,没耐心的小伙伴可以先行退出,因为这个警告完全可以不

    2024年02月04日
    浏览(54)
  • 玩转电脑|2种解决电脑保存文件找不到桌面存储路径问题方法

      📣今日作品:玩转电脑|2种解决电脑保存文件找不到桌面存储路径问题方法 👦 创作者 :Jum朱 ⏰预计花费:10分钟 📖个人主页: Jum朱博客的个人主页   一、收藏夹和库之间空白处右键  方法二、文件属性设置 三、结束语 在电脑上,我们都会保存一些需要的文件或者图片

    2024年02月09日
    浏览(151)
  • 网上邻居共享文件无法访问的解决方法

    单位和公司组建局域网的目的就是为了方便大家工作和学习,但是有的时候办公室中经常会需要通过网上邻居访问同事电脑上共享的文件,省的用U盘考来考去;可是却时常碰到网上邻居无法访问的情况。下面几种方法可以逐一尝试。 网上邻居→本地连接→属性里,检查是否安

    2024年02月06日
    浏览(41)
  • win10无法msi文件的解决方法

    1 win+R 打开运行,输入service.msc运行,打开服务管理器 2.找到 Windows Installer,右键点击,选择启动 3. win+R 打开运行,输入cmd运行, Ctrl+Shift+Enter (以管理员身份打开Windows命令处理程序)  4.输入 msiexec /package , 空一格 后加上msi文件 地址 ,再加“ ”和文件名,最后要有 .

    2024年02月09日
    浏览(44)
  • Outlook提示无法保存该附件。无法创建文件......

    Outlook提示无法保存该附件。无法创建文件........ 在Outlook中打开附件或者是下载附件的时候,弹出提示信息:无法保存该附件。无法创建文件:****。请右键单击要在其中创建文件的文件夹,然后单击快捷菜 单上的“属性”,检查对该文件夹的权限。 或者提示:Cannot create fi

    2024年02月04日
    浏览(47)
  • Mac软件“无法打开或文件已损坏”的解决方法

    macOS的软件通过来说都会采用dmg格式,只需要双击打开dmg文件,在弹出窗口中,将软件拖入应用程序文件夹即可。 安装完软件后,有时打开软件会提示软件无法打开,或者提示文件已损坏。通常这种情况,并非是你下载的文件真的损坏了,而是mac系统为了安全性,非应用商店

    2024年02月06日
    浏览(80)
  • 无法启动 Microsoft Outlook。无法打开 Outlook 窗口。无法打开此文件夹集合:解决方法

    打开「运行」窗口,输入以下命令初始化 Outlook 客户端 第一种方法: 注意:该操作将清除原有的 Outlook 配置文件信息 1、找到 outlook 安装目录,本例是安装的 Office365  2、初始化 第二种方法: 1、打开控制面板,找到 Mail 2、打开 显示配置文件 3、添加一个 Profile 4、输入配

    2024年02月11日
    浏览(54)
  • 文件夹显示无法访问、拒绝访问需要权限的解决方法

        为了简便管理资料,我们都会选择在电脑上建立文件夹来保存不同作用的资料。文件夹显示无法访问、拒绝访问需要权限的解决方法但是当我们遇到某些文件夹打不开无法访问、拒绝访问时该怎么办呢?这里和大家讲一个方法来解决遇到文件夹无法访问、拒绝访问的这种

    2024年02月07日
    浏览(55)
  • Android stdio 无法新建或打开AIDL文件(解决方法)

    1.在gradle文件中添加如下代码 2.AIDL要求minsdk=16,并且要使 aidl true(在Gradle中添加) android{     buildFeatures {         aidl true     } } 我们看见,可以创建AIDL文件了 3.接着,我们看到文件出现如下提示  4.在gradle中添加如下代码 android{compileOptions.encoding=\\\"GBK\\\"} 5.若在文件中应用的

    2024年02月08日
    浏览(48)
  • VisualStudio突然无法启动显示log文件Error解决方法

    1、在安装目录里面找到 devenv.exe 这个文件的所在位置C:Program FilesMicrosoft Visual Studio 10.0Common7IDE 2、点击左下角图标,在输入框输入cmd进入控制台 3、在控制台命令行输入cd C:Program FilesMicrosoft Visual Studio 10.0Common7IDE 4、最后输入devenv /log,按enter键就行了 再次打开Visual Studio,就不

    2024年02月04日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包