Хобрук: Ваш путь к мастерству в программировании

Как установить OpenCV на Arch Linux

Я попытался установить opencv на Arch с помощью пакета aur. Он успешно установлен, но когда я пытаюсь импортировать opencv2 в python, я получаю следующую ошибку

ImportError: libhdf5.so.100: cannot open shared object file: No such file or directory

Не только на python, даже когда я пытался запустить с его помощью образец кода на C ++, я получил ту же ошибку. Я пробовал искать в сети, нашел несколько человек, которые столкнулись с подобной проблемой, но все равно не могу ее исправить.

Я установил Open CV версии 3.2



Ответы:


1

Есть несколько пакетов с похожими именами, но работает только один.

Если вы еще не установили OpenCV, запустите:

pacman -S opencv
pacman -S python-opencv

Установите hdf5:

pacman -S hdf5

Обратите внимание, что инструкции для Sikuli , который зависит от OpenCV, указывают, что в /usr/lib требуется символьная ссылка. Обновление системы может разорвать ссылку, которую придется воссоздать, чтобы указать на самую последнюю версию библиотеки OpenCV Java:

# ls -la /usr/lib/libopencv_java*
-rwxr-xr-x 1 root root 2225952 Jul 18 02:48 /usr/lib/libopencv_java440.so
lrwxrwxrwx 1 root root      20 Aug  5 22:42 /usr/lib/libopencv_java.so -> libopencv_java440.so

Это можно сделать с помощью команды ln:

sudo su -
cd /usr/lib
rm libopencv_java.so
ln -s libopencv_java440.so libopencv_java.so
19.07.2017
  • Собственно, base-devel и opencv-samples не нужны для компиляции c ++. 31.01.2019
  • Обратите внимание на то, что python-opencv также необходимо установить из-за 28.04.2021

  • 2

    В версии 4 в конфигурации по умолчанию для компиляции opencv требуются hdf5 и vtk, однако это не указано как зависимость от opencv.

    Это упоминается в двух ошибках на странице Archlinux: 1, 2.

    Есть 2 возможных обходных пути:

    1. sudo pacman -S hdf5 vtk (занимает около 231.24 MiB памяти)
    2. Если ваша программа не требует hdf5 и vtk, удалите -lopencv_hdf и -lopencv_viz из /usr/lib/pkgconfig/opencv4.pc (в случае, если программа использует pkg-config) или удалите 2 флага во время компиляции.

    Предупреждение: Если вы используете обходной путь 2, обновление пакета opencv отменит эти изменения. Вы можете добавить их как NoUpgrade запись в pacman.conf (подробности см. На странице руководства), но файл больше не будет обновляться, и что-то еще может сломаться.

    31.01.2019
  • Большое вам спасибо, мне не хватало пакета vtk: ') 22.04.2021

  • 3

    для opencv4

    sudo pacman -Sy opencv vtk hdf5
    

    при желании установить Qt

    sudo pacman -Sy qt5-base qtcreator qt5-doc gdb cmake
    

    создать проект CMake в QtCreator

    вставьте следующее

    CMakeLists.txt

    cmake_minimum_required(VERSION 3.5)
    
    project(opencv LANGUAGES CXX)
    
    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    add_executable(opencv main.cpp)
    
    find_package( OpenCV REQUIRED )
    include_directories( ${OpenCV_INCLUDE_DIRS} )
    target_link_libraries( opencv ${OpenCV_LIBS} )
    

    main.cpp

    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    int main(int argc, char** argv)
    {
        if ( argc != 2 )
        {
            printf("usage: DisplayImage.out <Image_Path>\n");
            return -1;
        }
        Mat image;
        image = imread( argv[1], 1 );
        if ( !image.data )
        {
            printf("No image data \n");
            return -1;
        }
        namedWindow("Display Image", WINDOW_AUTOSIZE );
        imshow("Display Image", image);
        waitKey(0);
        return 0;
    }
    
    18.11.2020
    Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..