matlab程序打包exe并在python中调用


前言

在github上找了一份模板匹配的代码,是matlab和C混编的(真是涨姿势了,还有这种操作)。本来想把代码转成python的,无奈编程水平太渣,转了一半儿卡住了,C的部分还不能调试,靠自己是解决不了了。

没办法,活儿还得干,那就只能另寻出路了。为此又调研了一下怎么把matlab程序打包成exe。改了一星期代码没改出来,打包exe一下午解决了,唉,说多了都是泪。

一、打包exe流程

此处参考这篇博客

  1. 切换主界面到APP,从下拉选项中找到application compiler。
    在这里插入图片描述
  2. 选择要打包程序的主文件。
    在这里插入图片描述
  3. 程序会自动提取主文件调用的全部文件,这时候选择runtime included in package这一项,可以将matlab运行程序一同打包,之后就可以在无matlab的电脑上运行。然后点击package打包即可。
    PS:打包时可能会提示没有matlab runtime,选择同意会自己联网下载。
    在这里插入图片描述
  4. 打包好后会产生三个文件夹,进第一个文件夹运行exe文件进行安装,之后去安装路径下找exe就可以运行,或者使用第三个文件夹for_testing中的exe也行。
    在这里插入图片描述

二、python调用exe方法

1.调用代码

此处参考这篇博客

我这里使用了第一种,os.system,将要执行的exe和参数作为一个字符串传入。

import os
src = 'data/30.png'
dst = 'data/base.png'
os.system('DEMO.exe '+src+' '+dst)

2.关于exe传参

首先明确目标:将matlab程序作为函数调用,根据情况传入不同的图像路径。

为了实现传参,对matlab代码有一点点要求。

本人上来就走错了路(/(ㄒoㄒ)/~~),尝试在matlab中用input读取输入,然而调用exe时并没有给我输入参数的机会。

换种思路,我既然是要作为函数调用,是不是直接把matlab代码改成一个函数就可以。一开始没这么做主要时考虑到定义一个函数没有程序去调用它会不会不执行,结果是自己想多了(😂)。

3.遗留的问题

整个流程算是基本跑通了,唯一的问题就是matlab函数返回结果没法传给python。

虽然在matlab中定义了函数输出项,在python中也尝试了a = os.system(……),但是a只能接收到程序执行了的系统返回值。

a = os.system('DEMO.exe '+src+' '+dst)
print(a)
% 输出为0

无奈现在只能在matlab中将返回值保存到txt中,再从python里读取。后续有需要了再查一查有没有解决办法吧,暂时够用了。

总结

如非必要不要尝试自己转代码,都是泪,尤其是搜遍全网只有一份的代码,这么多年了为什么只有一份还不能说明什么吗,唉,只怪自己太无知。

  • 0
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值