Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中调用OpenCV时不能在C++中读取图像 我将使用CV::在C++程序中读取图像。当我直接在终端上运行它时,它工作得很好。但是,当我在matlab中用system或dos调用它时,它总是返回空Mat,没有任何错误_C++_Matlab_Opencv - Fatal编程技术网

在MATLAB中调用OpenCV时不能在C++中读取图像 我将使用CV::在C++程序中读取图像。当我直接在终端上运行它时,它工作得很好。但是,当我在matlab中用system或dos调用它时,它总是返回空Mat,没有任何错误

在MATLAB中调用OpenCV时不能在C++中读取图像 我将使用CV::在C++程序中读取图像。当我直接在终端上运行它时,它工作得很好。但是,当我在matlab中用system或dos调用它时,它总是返回空Mat,没有任何错误,c++,matlab,opencv,C++,Matlab,Opencv,我在MacOS Sierra 10.12.4工作。OpenCV版本是2.4.13。Matlab版本是R2015b。有人能帮我吗?请给我一些建议 例如,我编写了一个测试代码 #include <opencv2/opencv.hpp> int main(){ std::string path = "/Users/zhefeng.wzf/0001.jpg"; cv::Mat image = cv::imread(path); if(image.empty()){

我在MacOS Sierra 10.12.4工作。OpenCV版本是2.4.13。Matlab版本是R2015b。有人能帮我吗?请给我一些建议

例如,我编写了一个测试代码

#include <opencv2/opencv.hpp>
int main(){
    std::string  path = "/Users/zhefeng.wzf/0001.jpg";
    cv::Mat image = cv::imread(path);

    if(image.empty()){
        printf("Cannot load image:%s\n",path.c_str());
    }else{
        printf("Load the image successfully.\n");
        cv::imshow("image",image);
        cv::waitKey();
    }

    return 0;
}
然后我用

g++readImg.cpp-o readImg`pkg config-cflags-libs opencv`

当我在终端运行它时,

但当我在matlab中运行它时,

它失败了,因为Matlab使用了自己的OpenCV动态库,它与应用程序的版本不兼容。只需在Linux中使用DYLD_INSERT_LIBRARIESequals进行LD_预加载,即可强制Matlab使用应用程序的OpenCV版本

在linux中,您可以找到应用程序的版本,该版本具有到ldd的otoolequals

这将提供应用程序使用的所有动态库。用

DYLD_INSERT_LIBRARIES="path/to/dylib.dylib:another/path/dylib2.dylib" /path/to/matlab

< >运行你的代码,这应该起作用。< /p>你传递给CV的路径是什么::在C++程序中读?尝试使用完全限定路径。我将绝对路径传递给cv::imread。我确信它可以找到文件。路径是/Users/zhefeng.wzf/我想问题是最后一个文件夹的名称,它有.wzf,这可能会导致问题,请更改文件夹的名称,然后重试。我更改了文件夹的名称,但仍然失败。:哇!你的解决方案完美地解决了我的问题。谢谢!Matlab在/Applications/Matlab_R2015b.app/bin/maci64中有自己的opencv库,这可能与系统opencv冲突。
DYLD_INSERT_LIBRARIES="path/to/dylib.dylib:another/path/dylib2.dylib" /path/to/matlab