gpt4 book ai didi

c++ - 无法使用 system() 在 matlab 中运行可执行文件,但它可以在命令行中运行

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:21 33 4
gpt4 key购买 nike

我需要在 Matlab 中使用系统命令运行一个使用 OPencv 库的 C++ 可执行文件。我已经用 make 编译了所有代码并且它是成功的。当我在命令行中运行该程序时,它的工作方式如下所示。

lib/sift/bin/siftfeat -x -o tampered1.txt tampered1.jpg
Finding SIFT features...
Found 2596 features.

问题是当我用 matlab 运行它时。发生以下错误:

>>system('lib/sift/bin/siftfeat -x -o tampered1.txt tampered1.jpg')
Finding SIFT features...
Error: unable to load image from tampered1.jpg
lib/sift/bin/siftfeat -x -o tampered1.txt tampered1.jpg: Aborted

错误发生在 lib/sift/src/siftfeat.c 中以下一段代码:

fprintf( stderr, "Finding SIFT features...\n" );
img = cvLoadImage( img_file_name, 1 );
if( ! img )
fatal_error( "unable to load image from %s", img_file_name );

为什么会这样?我的意思是,如果代码在命令行中运行,为什么它不使用系统 Matlab 命令运行? matlab 不识别 cvLoadImage 函数吗?我正在使用 Matlab R2014a 和 OPencv-2.4.9。这段代码是从另一台电脑上复制过来的,我只是重新编译了一下。在复制代码的原始 PC 中,系统命令有效。

最佳答案

您正在错误的文件夹中运行 system()-cmd。当您使用绝对路径调用二进制文件时,图像的路径是相对的。因此,图像需要位于 matlab 执行 system()-cmd 的文件夹中。你可以简单地通过执行来检查:

>> system('pwd')
"Folder/where/matlab/exec/your/cmd"

如果输出对应于你的图像位置,一切都应该没问题,否则你必须给你的程序这样的绝对路径:

>> system('lib/sift/bin/siftfeat -x -o Folder/to/your/txt/tampered1.txt Folder/to/your/image/tampered1.jpg')

关于c++ - 无法使用 system() 在 matlab 中运行可执行文件,但它可以在命令行中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24347884/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com