【项目实战】——Python打包正装换底色代码为exe文件(可在其他无Python环境下运行)

目录

1.安装pyinstaller

2.生成.exe文件

方法1:

方法2:

方法3:

(1)使用命令行窗口进入项目的根目录

(2)在改目录下执行pyi-makespec main.py(main.py是你的主入口文件)

(3)修改main.spec文件

(4)执行 pyinstaller -F main.spec命令

(5)在dist/main文件夹里面点击.exe文件

参考:

不同博主关于生成exe文件的文章

bug解决

生成图标



1.安装pyinstaller

我这里是使用清华的镜像下载的,因为直接使用 pip install 速度会慢一点,使用国内的镜像网站那速度可蹭蹭的快啊。

pip install -i http://pypi.douban.com/simple/ pyinstaller



2.生成.exe文件

方法1:

### pyinstaller 所有需要打包的py文件 -p 环境site-packages绝对路径

### 注意:py文件的路径需要以第一个py文件为准
pyinstaller Voc_xml_expander.py dataTransform.py Voc_xml_expander_logic.py
images_transform.py labels_transform.py -p D:\softwares_install\Anaconda3\envs\Train\Lib\site-packages

方法2:

最直接的方法:

pyinstaller -F -w 主py文件的绝对路径
pyinstaller -F -w C:\Users\...\Main.py

方法3:

其他比较全面的方法


(1)使用命令行窗口进入项目的根目录

我这里图反面,直接在
我这里就是 进入到E:\ljl\bank。


(2)在改目录下执行pyi-makespec main.py(main.py是你的主入口文件)

执行完毕之后,会生成一个main.spec文件


(3)修改main.spec文件

刚开始main.spec文件打开后是
在这里插入图片描述
1.要在第一行,也就是a = Analysis([‘main.py’])这里面添加你的所有的.py文件,注意是所有的而且只能是.py文件,第一个是代码你的入口文件。
另外假如.py文件不是与你的主入口文件main.py文件在同一个目录下,那么该文件要写绝对路径。
2.修改datas(放一些图片音频等文件),这里面是放非.py文件,这里是以元组的形式,(“文件夹的绝对路径”,“文件夹名”)注意这里不是写具体的文件名,而是文件夹。

下面是我修改过后的:
在这里插入图片描述
我这里data里面有一个.txt文件,像什么照片啦,音频啦同样的道理。


(4)执行 pyinstaller -F main.spec命令

在界面中输入 pyinstaller -F -w -i tubiao.ico pyexe.spec(-i 后面跟着的是exe程序的图标,最后跟.spec文件)

(-F:产生一个文件;-w:使用Windows子系统执行,不会打开命令行)

pyinstaller -F mycode.py --noconsole

还可以这样pyinstaller -F -w mycode.spec (-w就是取消窗口)

这时候会生成两个文件夹,build和dist。然后.exe文件就在里面,快点开看看吧。
在这里插入图片描述
在这里插入图片描述


(5)在dist/main文件夹里面点击.exe文件

哇塞,好厉害哟,下次就直接把这个文件夹发给比人就好啦。

import cv2
import numpy as np
import os#使用os的path模块来获得桌面的路径
def desktop_path():return os.path.join(os.path.expanduser('~'),"Desktop")
# print(desktop_path())#收集用户需要输入的参数
def inputParams():path = input("输入需要换底色的正装照绝对路径:")orignColor = input("输入当前正装照的底色:蓝色——b,红色——r:")changedColor = input("输入需要换成正装照的底色:蓝色——b,红色——r,白色——w:")return path,orignColor,changedColor#蓝底换成其他的颜色
def Blue2Others(path,changedColor):img = cv2.imread(path)# 图像缩放img = cv2.resize(img, None, fx=0.5, fy=0.5)rows, cols, channels = img.shape# 图片转换为灰度图hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# 图片的二值化处理,可能会出现噪声(白点),有的图片显示的很明显,这就需要我们进行腐蚀或膨胀。lower_blue = np.array([70, 70, 70])upper_blue = np.array([110, 255, 255])mask = cv2.inRange(hsv, lower_blue, upper_blue)  # 蓝色范围内变白,其余之外全部变黑# 腐蚀膨胀,主要用于去处噪声erode = cv2.erode(mask, None, iterations=1)  # 进行腐蚀操作dilate = cv2.dilate(erode, None, iterations=1)  # 进行膨胀操作# 遍历每个像素点,进行颜色的替换for i in range(rows):for j in range(cols):if dilate[i, j] == 255:  # 像素点为255表示的是白色,此处将白色处的像素点替换为红色(将if dilate[i,j]==255中的dilate换成erode对比试试)if changedColor == 'r':img[i, j] = (50, 50, 255) # 此行将蓝底替换成红底,即(0,0,255)代表红色,由于历史原因,为BGR(蓝绿红)通道,不是RGB(红绿蓝)通道,所以255放第三个位置else:img[i,j] = (255,255,255)  # 此行将蓝底替换成白底,即(255,255,255)代表白色return img# 红底换成其他的颜色
def Red2Others(path, changedColor):img = cv2.imread(path)# 图像缩放img = cv2.resize(img, None, fx=0.5, fy=0.5)rows, cols, channels = img.shape# 图片转换为灰度图hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# 图片的二值化处理,可能会出现噪声(白点),有的图片显示的很明显,这就需要我们进行腐蚀或膨胀。lower_red = np.array([0, 90, 70])upper_red = np.array([110, 255, 255])mask = cv2.inRange(hsv, lower_red, upper_red)  # 蓝色范围内变白,其余之外全部变黑# 腐蚀膨胀,主要用于去处噪声erode = cv2.erode(mask, None, iterations=1)  # 进行腐蚀操作dilate = cv2.dilate(erode, None, iterations=2)  # 进行膨胀操作# 遍历每个像素点,进行颜色的替换for i in range(rows):for j in range(cols):if dilate[i, j] == 255:  # 像素点为255表示的是白色,此处将白色处的像素点替换为红色(将if dilate[i,j]==255中的dilate换成erode对比试试)if changedColor == 'b':img[i, j] = (255, 0, 0)  # 此行将红底替换成蓝底,即(255,0,0)代表lan色,由于历史原因,为BGR(蓝绿红)通道,不是RGB(红绿蓝)通道,所以255放第三个位置else:img[i, j] = (255, 255, 255)  # 此行将红底替换成白底,即(255,255,255)代表白色return imgdef main():path, orignColor, changedColor = inputParams()if orignColor == 'r':img = Red2Others(path,changedColor)elif orignColor == 'b':img = Blue2Others(path,changedColor)print("选中显示的图片,按下s键保存图片")cv2.imshow('changedImg',img)# 窗口等待的命令,0表示无限等待k = cv2.waitKey(0)  #监听键盘事件if k == ord('s'):   #英文状态下键盘按s键,会将图片保存至桌面# font = cv2.FONT_HERSHEY_DUPLEX#参数依次为:涂鸦的图片、涂鸦的文字、位置、字体、字体大小、字体颜色、字体画笔粗细# img = cv2.putText(img,"girl",(10,30),font,0.5,(0,0,0),2)desktopPath = desktop_path()savePath = desktopPath + "\changedImg.jpg"print("照片已保存至:%s" % savePath)cv2.imwrite(savePath,img, [int(cv2.IMWRITE_JPEG_QUALITY),100])cv2.destroyWindow('changedImg')  #保存完后销毁名称为red的窗口else:cv2.destroyAllWindows()if __name__ == '__main__':try:main()except:print("请输入正确路径、原底色以及需要换的底色代号!!!")

参考:

不同博主关于生成exe文件的文章

Pyinstaller使用 - 知乎

【Python】-如何将自己所写的程序打包然后在别人的电脑上运行(使用pyinstall打包多个.py文件成.exe)_放开这颗白菜让我来-CSDN博客_python打包exe到别的电脑

学习笔记(42):Python实战编程-pyinstaller程序打包_python_AI_fans的博客-CSDN博客

pyinstaller打包时提示UPX is not available._Veiko的博客-CSDN博客

https://blog.csdn.net/qq_27017791/article/details/102748766

https://blog.csdn.net/ZhangHW_/article/details/99697285

bug解决

pyinstaller打包时提示UPX is not available._Veiko的博客-CSDN博客

pyinstaller设置icon图标出现“struct.error: unpack requires a buffer of 16 bytes” - Amy鱼 - 博客园

生成图标

在线生成透明ICO图标——ICO图标制作

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

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

相关文章

C++STL总结笔记(三)—— 常见算法

文章目录一、基本概念二、程序示例1.遍历2. 查找3. 排序、拷贝、替换4. numeric相关算法总结一、基本概念 算法是STL中很重要的一部分,其功能包括比较,查找,排序,交换,遍历,复制等等。 最大的算法头文件是…

Java zip解压,并遍历zip中的配置文件 .cfg或.properties

1.解析cfg或properties配置文件 讲配置文件&#xff0c;读取&#xff0c;并封装成为map类型数据 /*** 解析cfg文件** param cfgFile* return*/public static Map<String, Object> readCfg(FileInputStream cfgFile) {Properties prop new Properties();Map<String, O…

db2 常用配置

db2set配置&#xff1a; db2set DB2_ENABLE_LDAPNO db2set DB2_ALTERNATE_GROUP_LOOKUPGETGROUPLIST db2set DB2_RESTORE_GRANT_ADMIN_AUTHORITIESON db2set DB2_SKIPINSERTEDON db2set DB2_LOAD_COPY_NO_OVERRIDENONRECOVERABLE db2set DB2_EVALUNCOMMITTEDON db2set DB2_SKIP…

安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(三)码农网

12. 安装 Apache Tomcat Tomcat 是由 Apache 设计的用来运行 Java HTTP web 服务器的 servlet 容器。按照下面的方法安装 tomcat&#xff0c;但需要指出的是安装 tomcat 之前必须先安装 Java。 # yum install tomcat 安装 Apache Tomcat 安装完 tomcat 之后&#xff0c;启动 to…

【图像处理】——图像特效处理(马赛克、图像融合、毛玻璃等)

参考:https://blog.csdn.net/qq_43328040/article/details/109081414 import cv2 import numpy as np import random#马赛克:将一定大小窗口的RGB设置成一个颜色 def horseBox(img):row,col,chal = img.shapeboxRow = int(0.3*row)boxcol = int(0.3*col)for m in range(50,b…

JDK5.0新特性之:泛型

文/陈刚 2005-11-09 一、前言 泛型这个词在现在的JAVA挺时髦&#xff0c;光从字面上你是无法知道它代表些什么东东的&#xff0c;所以我们还是不要从字面去理解&#xff0c;而是从一些实例去了解它吧。 二、泛型之前的日子 &#xff2a;&#xff24;&#xff2b;&#xff11;.…

QT5.14.2基于PCL1.11.1显示点云(基于Windows VS2019开发环境)

文章目录一、安装1.1 PCL安装1.2 QT安装1.3 VTK编译二、程序配置1. 基于mscv创建QT的程序2. 配置QT工程文件和依赖项3. 编写点云显示的小程序总结一、安装 1.1 PCL安装 PCL1.11.1库的安装网上教程很多&#xff0c;推荐一个很好的教程&#xff1a; Win10 系统下 VisualStudio2…

Spring学习笔记—最小化Spring XML配置

自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg>元素&#xff0c;让Spring自动识别如何装配Bean的依赖关系。 自动检测(autodiscovery)比自动装配更进了一步&#xff0c;让Spring能够自动识别哪些类需要被配置成Spring Bean&#xf…

【数据结构】——快速排序

目录 一、代码 二、复杂度&#xff1a;O(nlog(n)) 三、快速排序的劣势 视频参考链接&#xff1a;https://www.bilibili.com/video/BV1mp4y1D7UP?p17 一、代码 思想&#xff1a;假设是对一个list进行排序 1、选取第一个元素作为p元素&#xff1b; 2、将p元素归位&#xff0…

读取数据库信息构建视图字段的备注信息,方便程序代码生成

在很多情况下&#xff0c;我们开发都需要有一个快速的代码生成工具用来提高开发效率&#xff0c;代码生成工具很多信息都是读取数据库的表、视图等元数据进行对象表信息的完善&#xff0c;有了这些信息&#xff0c;我们就可以在普通的实体类代码里面添加属性字段的中文注释&…

Ubuntu DNS bind9 配置

下面的配置就是实现解析test.zp.com到不同的IP地址 安装dns server软件包$ apt-get install bind9 配置dns配置文件的路径在/etc/bind路径下面添加一个zone$ /etc/bind# vim /etc/bind/named.conf.local 添加下面&#xff0c;语法可以参照/etc/bind/zones.rfc1918中的语法添加&…

微博分享错误

昨天再做这块的时候&#xff0c;不知怎么的点击之后什么反应都没有&#xff0c;程序也没有崩&#xff0c;日志倒是输出了这个错误 解决办法&#xff1a;打开你写分享的代码跟API文档对比一下创建文本、图片或者网页的时候是不是少写了那个属性&#xff0c;我这里是在创建网页的…

C++总结笔记(十二)—— 智能指针

文章目录前言一、智能指针是什么&#xff1f;二、示例总结前言 C对于内存管理的要求很高&#xff0c;如果不及时释放对象内存&#xff0c;就可能会发生内存泄露或野指针等情况&#xff0c;鉴于这种情况&#xff0c;C11提出了智能指针的概念。 一、智能指针是什么&#xff1f;…

代码生成工具之界面快速生成

界面开发&#xff0c;无论对于Web开发&#xff0c;还是Winform开发&#xff0c;都需要耗费一定的时间&#xff0c;特别对于一个数据库字段比较多的界面&#xff0c;一般就需要在编辑界面上摆的更多的控件来做数据显示&#xff0c;每次碰到这个&#xff0c;都有点头痛&#xff0…

javascript - 封装原生js实现ajax

1 /*2 * ajax方法3 */4 var Ajax function() {5 var that this;6 //创建异步请求对象方法7 that.createXHR function() {8 if(window.XMLHttpRequ…

QT对象树、信号和槽机制

文章目录一 、对象树是什么&#xff1f;二、信号和槽的基本概念2.1 信号2.2 槽2.3 松散耦合2.4 特点三、示例总结一 、对象树是什么&#xff1f; 对象树是由父类和若干子类对象组成&#xff0c;而子类也可以由若干孙类。 QT中的对象树是以QObject为起始父类来完成树的构建的&a…

【数据结构】——归并排序

目录 一、代码 二、随笔 一、代码 归并排序的主要思路&#xff1a;将两个有序的子列表归并为一个有序的大列表 #归并函数&#xff0c;假设li是由左右两个有序的子列表组成,假设两个子列表都是从小到大排好序的列表 def merge(li,low,mid,high)::param li: 由左右两个有序的子列…

开发发布npm module包

开发发布npm module包 问题 在项目开发过程中&#xff0c;每当进入一个新的业务项目&#xff0c;从零开始搭建一套前端项目结构是一件让人头疼的事情&#xff0c;就要重新复制一个上一个项目的前端框架和组件代码库。其中很多功能的模块组件都要重复拷贝&#xff0c;可以统一将…

如何使用ATS提高应用的安全性

App Transport Security&#xff0c;简短的说就是ATS&#xff0c;是iOS9和OS X El Capitan的一个新特性。App Transport Security 的目标是提高Apple 操作系统的安全性以及在此操作系统上运行的任何应用的安全性。 基于HTTP传输数据的网络请求都是明文。开启App Transport Secu…

手机客户端测试考虑的点

手机客户端测试考虑点总结 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 此文未本人工作中的总结&#xff0c;特此总结。 异常场景&#xff1a; 网络异常&#xff0c;服务器异常&#xff0c;接口异常或参考参数篡改&#xff0c;断电&#xff0c;…