mexopencv 每次重启 Matlab 都需要重新编译
Posted
技术标签:
【中文标题】mexopencv 每次重启 Matlab 都需要重新编译【英文标题】:mexopencv needs to re-compile every I restart Matlab 【发布时间】:2015-07-07 09:29:22 【问题描述】:我最近在我的 Windows 7 机器上安装了用于 MATLAB 的 mexopencv。我正在使用 MATLAB 2015a 32 位(在 64 位机器上)。我按照推荐的安装步骤(来自多个来源 - 我有编译器问题开始)并最终让它工作。该过程的最后一步是在 MATLAB 中运行以下命令:
mexopencv.make
这很好,从那以后我一直在愉快地使用它。但是,每当我重新启动 MATLAB 并运行使用 mexopencv 函数的代码时,我都会得到以下信息:
Error using cv.undistort
Invalid MEX-file 'C:\mexopencv-master\+cv\undistort.mexw32':
C:\mexopencv-master\+cv\undistort.mexw32 is not a valid Win32
application.
经过一番调查,我似乎可以解决这个问题的唯一方法是每次重新启动 MATLAB 时运行以下命令:
mexopencv.make('clean',true)
mexopencv.make
所以这实际上是每次我启动 MATLAB 时重新编译 mex 文件。这需要几分钟的时间,而且真的很痛苦!
有什么办法可以避免每次都这样做吗?
【问题讨论】:
我从来没有使用过 mexopencv,但看起来有些东西正在以 64 位重新编译你的二进制文件。您可以在 Windows 资源管理器中查看文件以查看它们在退出 MATLAB 时何时被修改吗?对了,既然你是64位机器,为什么不安装64位MATLAB呢?这样一来,一切都变得更简单、更快捷。\ @chappja - 感谢您的建议。我在观察 'C:\mexopencv-master\+cv\' 文件夹中的文件(包括 .mex32 文件)时退出了 MATLAB,但没有进行任何修改。再次打开 MATLAB 时也没有进行任何修改。 @chappja - 关于使用 64 位 MATLAB:我最初使用了这个,但是当我开始尝试运行 mex 时,我遇到了 Windows 7 64 位编译器的问题(请参阅讨论的问题部分here. 【参考方案1】:我遇到了同样的问题(每次都需要重建 mexopencv)。有人说他们通过设置系统 PATH 解决了这个问题,但在我的情况下没有。我的问题是通过将所有 opencv dll 复制到那些已编译的 mex 文件所在的目录中来解决的。
【讨论】:
以上是关于mexopencv 每次重启 Matlab 都需要重新编译的主要内容,如果未能解决你的问题,请参考以下文章
Idea-每次修改JS文件都需要重启Idea才能生效解决方法
DescriptorMatcher mexopencv 中的 imgIdx 问题