python直接生成exe文件(深度学习)

如果你对时间要求不是太高,c++调用模型,有很多模型无法调用,我们这里主要是讲一下如何把python生成可执行文件。

首先1:我们需要下载pyinstaller

下载方式很简单,pip conda都行

比较麻烦的方法是;

如果不能访问国外网络,去https://github.com/pyinstaller/pyinstaller下载pyinstaller
进入界面"Clone and download" “download zip”

//进入下载路径
F:
//进入子目录
cd F:\pyinstaller-develop\bootloader
//build the bootloader 运行
python ./waf configure build install
//重新进入根目录
cd F:\pyinstaller-develop
//安装pyinstaller
python setup.py install
//等待安装成功

python直接生成exe文件(深度学习)_第1张图片

 

python直接生成exe文件(深度学习)_第2张图片

 

安装成功

 

2:测试

//进入到name.py所在的文件夹
//pyinstaller -F name.py
//如
F:
cd F:\PYProject
pyinstaller -F inference_glass.py  //测试模型文件

运行报错

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position

解决方案

在你打包的命令行中先输入chcp 65001 然后再输入打包命令。
pyinstaller -F xxx.py

我的python程序inference_glass.py,导入训练好的模型,对十张图片进行测试。

# -*- coding: utf-8 -*-

import cv2
import tensorflow as tf
import numpy as np

path1 = "./1.jpg"
path2 = "./2.png"
path3 = "./3.png"
path4 = "./4.png"
path5 = "./5.png"
path6 = "./6.png"
path7 = "./7.jpg"
path8 = "./8.png"
path9 = "./9.png"
path10 = "./10.png"
path11 = "./11.png"
path12 = "./12.png"
face_dict = {1:'right',0:'low'}

w=100
h=100
c=3

def read_one_image(path):
    print(path)
    img = cv2.imread(path)
    print(img)
    img = cv2.resize(img,(w,h))
    return np.asarray(img)

with tf.Session() as sess:
    data = []
    data1 = read_one_image(path1)
    data2 = read_one_image(path2)
    data3 = read_one_image(path3)
    data4 = read_one_image(path4)
    data5 = read_one_image(path5)
    data6 = read_one_image(path6)
    data7 = read_one_image(path7)
    data8 = read_one_image(path8)
    data9 = read_one_image(path9)
    data10 = read_one_image(path10)
    data11 = read_one_image(path11)
    data12 = read_one_image(path12)
    data.append(data1)
    data.append(data2)
    data.append(data3)
    data.append(data4)
    data.append(data5)
    data.append(data6)
    data.append(data7)
    data.append(data8)
    data.append(data9)
    data.append(data10)
    data.append(data11)
    data.append(data12)
    
    saver = tf.train.import_meta_graph('./1/model.ckpt.meta')
    saver.restore(sess,tf.train.latest_checkpoint('./1/'))

    graph = tf.get_default_graph()
    x = graph.get_tensor_by_name("x:0")
    feed_dict = {x:data}
    logits = graph.get_tensor_by_name("logits_eval:0")

    classification_result = sess.run(logits,feed_dict)

    #打印出预测矩阵
    print(classification_result)
    #打印出预测矩阵每一行最大值的索引
    #print(tf.argmax(classification_result,1).eval())
    #根据索引通过字典对应人脸的分类
    output = []
    output = tf.argmax(classification_result,1).eval()
    for i in range(len(output)):
        print("No.",i+1,"face is belong to:"+face_dict[output[i]])

效果如下,启动时间比较慢,测试速度可以。

python直接生成exe文件(深度学习)_第3张图片

 

进入dist文件里面,里面就是exe文件,双击六六六,开始运行

又报错-,发现python代码里的模型文件和图片都是相对路径,需要改成绝对路径,或者复制到你的dist文件下;

python直接生成exe文件(深度学习)_第4张图片

 

 

 

 

python直接生成exe文件(深度学习)_第5张图片

直接点击exe文件就可以运行,看着生成的exe,真难看,想换成其它的,怎么做

找到一张图片,你自己喜欢的,可以是任何图像,百度搜索网上生成ico图标,把自己的图像生成为ico的格式,

 

然后执行pyinstaller -F -i xxx.ico xxx.py

 

点击以后发现先是出现命令界面,如果不想出来命令界面,需要

执行pyinstaller -F -i xxx.ico xxx.py -w

 

 

你可能感兴趣的:(机器学习,图像)