c++ - dyld : Library not loaded:/usr/local/opt/jpeg/lib/libjpeg. 9.dylib OpenCV C++ MacOS

标签 c++ macos opencv clion

我一直在尝试使用 C++ 使 OpenCV (3.4.0) 在 MacOS (10.11.6) 上运行。

我已经尝试了多种安装方式,但最终还是按照 this 安装“成功”了。指导。

我现在尝试在 CLion 中运行以下示例项目:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( )
{
    Mat image;
    image = imread("image1.jpg", CV_LOAD_IMAGE_COLOR);

    waitKey(0);
    return 0;
}

项目构建正常,但是当我尝试运行它时出现以下错误:

dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.9.dylib

我一直在四处寻找,我能找到的唯一相关问题与 PHP 有关。 非常感谢任何形式的正确方向的帮助或指示! 非常感谢!

最佳答案

OpenCV 需要 libjpeg库来读取你的 jpg 文件,当你运行你的程序时它是动态加载的(像一个 DLL)。该程序在预定义路径搜索该动态库 - /usr/local/opt/jpeg/lib/libjpeg.9.dylib,很可能您没有该文件。

第一步是在您的计算机上找到这个库,您可以通过运行以下命令来完成:

sudo find / -name 'libjpeg.*'

如果什么都找不到(就像我遇到的那样),您有几种选择:从源代码构建库,找到预构建的库并下载它,或者从包管理器(如 brew 或 MacPorts)安装它.可能我会先尝试酿造。注意:您可能需要 libjpeg 库的第 9 版。

brew install libjpeg 命令对我有用。 (您需要先输入 install brew)。

第二步:当你拿到库的时候,你需要确保程序能够找到它。通常有一种方法可以在构建时使用 OpenCV 构建脚本中某处的一些构建脚本变量来覆盖硬编码路径,如 /usr/local/opt 。一种更简单的方法可能是将它安装在预期的位置(在 /usr/local/opt),或者创建从该路径到真实位置的符号链接(symbolic link)。

我用过 brew,它实际上把它安装在了预期的路径上:

bash-3.2$密码 /usr/local/opt/libjpeg/lib bash-3.2$ ls libjpeg.9.dylib libjpeg.a libjpeg.dylib pkgconfig bash-3.2$ brew 信息 libjpeg jpeg:稳定的 9c(瓶装) 图像处理库 http://www.ijg.org /usr/local/Cellar/jpeg/9c(21 个文件,724.6KB)*

关于c++ - dyld : Library not loaded:/usr/local/opt/jpeg/lib/libjpeg. 9.dylib OpenCV C++ MacOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273061/

相关文章:

c++ - 当前对象的访问类

c++ - C++以相同方式排列两个 vector

java - 从 Java 调用时 OS X 命令行应用程序无法找到目录

macos - 如何以编程方式更改系统范围的桌面图片?

ios - 如何将 32 位二进制文​​件添加到 UIKit for Mac 上的 libsodium?

android - 如何在Android的OpenCV中优化我的算法?

c++ - 尝试将我的项目与外部 opencv 一起使用

c++ - 使用编译时常量枚举转换为字符串

c++ - C++ 和 Python 中的预定义文本替换

opencv - 在虹膜的opencv中使用霍夫圆函数查找分钟圆