PyCharm+PyQt5+pyinstaller打包labelImg.exe

news2025/1/12 11:57:47

0 开头

labelImg是一款标注软件,作为一个开源项目,它的源码可以在github上找到。官方仓库地址为:
https://github.com/heartexlabs/labelImg

小白安装时的最新版本编译出来的界面长这样:
在这里插入图片描述

之前在小白的博客里,也教过大家如何下载编译好的labelImg.exe软件,参看https://blog.csdn.net/horsee/article/details/122022035?spm=1001.2014.3001.5502

这篇博客写作的时间是2021-12-19,当时能够在github仓库上下载到的最新的exe版本为v1.8.1。
一年多时间过去了,不知道是不是这款软件已经趋于完善,此时此刻,恰如彼时彼刻,能够在github仓库上下载到的最新exe版本仍然为v1.8.1。

然而,该项目的最后更新时间为2022年的9月23日,目前能够提供的源码最新版本是v1.8.6。想要使用v1.8.6版本的labelImg,就只能自己想法子编译了。

1 准备

首先我们需要准备编译所需要的工程+工具。
这里的工程指的就是labelImg v1.8.6版本的源码文件,这从github仓库上很容易获得。

工具我们使用的是PyCharm,在Pycharm中我们还要获取 python pyqt5 lxml 以及 pyinstaller。

PyCharm的安装,本文略。
Python的安装,本文略。

2 配置

解压好labelImg v1.8.6的文件夹。将整个文件夹用PyCharm打开。

打开的时候如果你跟小白一样,在底栏上发现类似这样的报错:

无法加载文件 C:\Users\Admin\Desktop\labelImg-1.8.6\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本

那么按以下的方式处理:

  • 以管理员方式打开powershell
  • 输入 Get-ExecutionPolicy查看自己的权限执行策略是否为Restricted
  • 如果是的话,输入Set-ExecutionPolicy Bypass
  • 重新用PyCharm打开整个文件夹

接下来File -> Settings -> Project:labelImg-1.8.6 -> Python InterPreter
在这里插入图片描述

选择小加号,安装 PyQt5 + lxml + pyinstaller

其中lxml可能已经在项目中有了。小白安装的时候发现不需要自己安装。

3 编译

在下方Terminal中输入

pyinstaller --hidden-import=pyqt5 --hidden-import=lxml -F -n "labelImg" -c labelImg.py -p ./libs -p ./

等待编译完成,编译好的exe文件在dist文件夹下。

4 打开并使用

打开并标注一幅图像如下:

在这里插入图片描述

经过对比,这个版本比v1.8.1版本中多出了一些功能。
在这里插入图片描述

如图所示,可以通过快捷键Ctrl+V的方式将前一幅图片的标注拷贝到当前帧图像上。这对视频前后帧图像的标注极为有用。

这个过程坑还是比较少的,轻松加愉快,以后也不必受制于仓库上发布的exe版本了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring学习5

一、代理模式 代理模式就是AOP的底层! 1.代理模式的分类 静态代理动态代理2.静态代理 角色分析: 抽象角色:一般使用接口或者抽象类来解决真实角色:被代理的角色代理角色:代理真实角色后,一般会做一些附属操…

走进小程序【七】微信小程序【常见问题总结】

文章目录🌟前言🌟小程序登录🌟unionid 和 openid🌟关键Api🌟登录流程设计🌟利用现有登录体系🌟利用OpenId 创建用户体系🌟利用 Unionid 创建用户体系🌟授权获取用户信息流…

JVM内存模型详解

JVM内存模型和Java内存模型都是面试的热点问题,名字看感觉都差不多,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关mikechen。 什么是JVM JVM是Java Virtual …

【教学类-30-04】10以内减法题不重复(一页两份)(包括6以内、7以内、8以内、9以内、10以内减法题 只抽取25个)

作品展示 ——10以内不重复减法题 需求: 1、制作10以内减法题 材料准备: Word模板 代码展示: 6、7、8、9、10以内减法一页两份(10以内减法一页两份(6以内、7以内、8以内、9以内、10以内不重复减法题) 时间…

文件访问被拒绝?5个解决方法!

案例:文件访问被拒绝 【朋友们,想问问大家的电脑有遇到过文件访问被拒绝的情况吗?真的太头疼了,大家都是怎么解决的呢?】 在日常使用电脑和操作文件时,有时我们可能会遇到文件访问被拒绝的情况。这可能会…

Scala框架Akka学习

Scala框架Akka 文章目录Scala框架AkkaAkka概述Akka特点Akka与Scala.actors.Actor的关系Akka模型介绍Actor模型的优点Akka模型的核心概念如何创建Actor添加依赖在Akka中,Actor负责通信,在Actor中有一些重要的生命周期方法**akka的架构原理**创建Actor的步…

Charles二次开发-接口解密

1,使用背景 最近工作中对公司接口进行抓包,发现接口路径和返回都是经过加密的,对于查看接口路径及接口返回结果带来了不便,于是想到了对Charles进行小改造,在Charles上增加一个按钮对加密的请求、响应结果解密&#x…

[学习笔记]计算机图形学(一)

计算机图形学学习笔记(一) 什么是计算机图形学 计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。 什么是好的画面? 从技术层面简单的评判标准:直接看画面…

Android实现RecyclerView分组显示功能完整示例(自定义组头和Item布局)

实现效果截图&#xff1a; 首先&#xff0c;我们需要为RecyclerView添加一个分组的概念&#xff0c;我们可以创建一个Group类来表示分组&#xff0c;包括分组名称和分组中的数据项列表。代码如下&#xff1a; public class Group {private String name;private List<Item&g…

ChatGPT-5到底有多强?Battle!咱貌似也不输呀!

盘点今年的热点话题&#xff0c;ChatGPT是不可避免要被反复提及的一part。从去年的-3.0到今年的-3.5&#xff0c;再到上月刚发布-4.0。从用户体验和市场反馈来讲&#xff0c;这半年的时间&#xff0c;ChatGPT每一步都走得又稳又快&#xff01; 回想起今年2月初ChatGPT全网爆火的…

最短路径-dijkstra/floyd

目录 floyd -dijkstra floyd floyd:用来求所有顶点之间的最短路径问题,求最短路径具体节点顺序&#xff0c;求各点之间最短路径长度 理解floyd&#xff1a; 二维矩阵图&#xff0c;就是不断通过测试新的节点k&#xff0c;看看k节点能不能作为中间节点优化各点之间的最短距离…

SourceMap源码映射详细讲解

SourceMap源码映射详细讲解 前端工程打包后代码会跟项目源码不一致&#xff0c;当代码运行出错时控制台上定位出错代码的位置跟项目源码上不对应。这时候我们很难定位错误代码的位置。SourceMap的用途是可以将转换后的代码映射回源码&#xff0c;如果设置了js文件对应的map资源…

Java每日一练(20230416)

目录 1. 三数之和 &#x1f31f;&#x1f31f; 2. 基本计算器 &#x1f31f;&#x1f31f;&#x1f31f; 3. 通配符匹配 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java…

Android:编译libevent动态库并移植jni中,在Android AVD虚拟机上实现一个http服务器

libevent源码&#xff1a;libevent-2.1.8-stable Android Studio版本&#xff1a;Android Studio Electric Eel | 2022.1.1 Patch 2 AVD虚拟机为x86. https://developer.android.google.cn/studio/run/emulator-networking?hlzh-cn#connecting 大体步骤&#xff1a; 1.在ws…

Vue2_01_data_插值

插值语法 {{name}} data: vue实例的数据对象 data中数据变化时将重新渲染容器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--引入vue,引入之后vue.js 创建了一个全局变…

c语言进阶篇_动态内存管理(数组可以自动扩容?)

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言初阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:讲解c语言中的动态内存管理知识,涉及malloc函数、call…

微信小程序运行及更新机制

微信小程序运行及更新机制1、微信小程序运行机制1.1 前台和后台1.2 小程序启动&#xff1a;冷启动和热启动1.3 小程序销毁2、微信小程序更新机制2.1 启动时同步更新定期检查发现版本更新用户长时间未使用小程序2.2 启动时异步更新开发者手动触发更新2.3 小程序管理后台的相关设…

软件测试分类详解

一图看清软件测试分类 一、按测试技术分&#xff08;是否查看代码&#xff09; **1. 黑盒测试**&#xff1a;软件功能是否正常使用【功能的测试】 **2. 白盒测试**&#xff1a;代码逻辑是否正确【结构的测试】 **3. 灰盒测试**&#xff1a;介于两者之间的测试&#xff0c;也…

第12章_集合框架

第12章_集合框架 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 本章专题与脉络 1. 集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 一方面&#xff0c;面向对象语言对事物的体现都是以对…

iOS 项目嵌入Flutter 运行

一 创建Flutter 模块命令行flutter create --template module my_flutter创建完成后&#xff0c;该模块和普通的Flutter项目一直&#xff0c;可以通过Android Studio或VSCode打开、开发、运行&#xff1b;和之前项目不同的iOS和Android项目是一个隐藏文件&#xff0c;并且我们…