dyld: библиотека не загружена: /usr/local/opt/jpeg/lib/libjpeg.9.dylib OpenCV C ++ MacOS - PullRequest
0 голосов
/ 10 мая 2018

Я пытался заставить OpenCV (3.4.0) работать на MacOS (10.11.6) с C ++.

Я пробовал различные способы установки, но в итоге "преуспел"следующие это руководство.

Я сейчас пытаюсь запустить следующий пример проекта в 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.Любая помощь или указатель в правильном направлении высоко ценится!Заранее большое спасибо!

1 Ответ

0 голосов
/ 10 мая 2018

OpenCV требует библиотеку libjpeg для чтения вашего jpg-файла, и она динамически загружается (например, DLL) при запуске вашей программы.Программа ищет эту динамическую библиотеку по заранее заданному пути - /usr/local/opt/jpeg/lib/libjpeg.9.dylib, и, скорее всего, у вас там нет этого файла.

Первый шаг - найти эту библиотеку на вашем компьютере, что вы можете сделать с помощью:выполняется:

sudo find / -name 'libjpeg.*'

Если ничего не найдено (как это случилось со мной), у вас есть несколько вариантов: собрать библиотеку из исходного кода, найти предварительно собранную библиотеку и загрузить ее или установить изменеджер пакетов (например, Brew или MacPorts).Вероятно, я бы попробовал варево первым.Примечание: вам, вероятно, нужна версия 9 библиотеки libjpeg.

brew install libjpeg команда сработала для меня.(сначала нужно установить brew ).

Шаг 2: когда вы получаете библиотеку, вам нужно убедиться, что программа может ее найти.Обычно есть способ переопределить жестко закодированный путь, такой как /usr/local/opt во время сборки, используя некоторую переменную сценария сборки где-нибудь в сценариях сборки OpenCV.Более простым способом может быть либо установить его там, где он ожидает (в /usr/local/opt), либо создать символическую ссылку с этого пути в реальное местоположение.

Я использовал brew, и он фактически установил егопо ожидаемому пути:

bash-3.2$ pwd /usr/local/opt/libjpeg/lib bash-3.2$ ls libjpeg.9.dylib libjpeg.a libjpeg.dylib pkgconfig bash-3.2$ brew info libjpeg jpeg: stable 9c (bottled) Image manipulation library http://www.ijg.org /usr/local/Cellar/jpeg/9c (21 files, 724.6KB) *

...