Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Python 如何在arch linux上安装OpenCV_Python_Opencv_Installation_Archlinux_Opencv4 - Fatal编程技术网

Python 如何在arch linux上安装OpenCV

Python 如何在arch linux上安装OpenCV,python,opencv,installation,archlinux,opencv4,Python,Opencv,Installation,Archlinux,Opencv4,我尝试过使用aur包在arch上安装opencv。它已成功安装,但当我尝试在python中导入opencv2时,出现以下错误 ImportError: libhdf5.so.100: cannot open shared object file: No such file or directory 不只是Python,即使当我尝试使用C++运行C++示例代码时,也会得到同样的错误。我试着在网上搜索,找到了一些面临类似问题的人,但我仍然无法解决 我已经安装了Open CV 3.2版,有多个名称相

我尝试过使用aur包在arch上安装opencv。它已成功安装,但当我尝试在python中导入opencv2时,出现以下错误

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

不只是Python,即使当我尝试使用C++运行C++示例代码时,也会得到同样的错误。我试着在网上搜索,找到了一些面临类似问题的人,但我仍然无法解决


我已经安装了Open CV 3.2版,有多个名称相似的软件包,但只有一个有效

如果尚未安装OpenCV,请运行:

pacman-S opencv
pacman-spythonopencv
安装:

pacman-S hdf5
请注意,对于依赖于OpenCV的Sikuli,表示在
/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

在版本4中,在默认配置下,编译
opencv
需要
hdf5
vtk
,但它未列为依赖项 opencv的

archlinux页面上的两个bug中提到了这一点:

有两种可能的解决方法:

  • sudo pacman-S hdf5 vtk
    (大约占用内存的
    231.24 MiB
  • 如果您的程序不需要
    hdf5
    vtk
    ,请从
    /usr/lib/pkgconfig/opencv4.pc
    中删除
    -lopencv\u hdf
    -lopencv viz
    (如果程序使用
    pkg config
    ),或在编译时删除这两个标志

  • 警告:如果使用变通方法2,更新
    opencv
    包将还原这些更改。您可能希望将它们添加为
    pacman.conf
    中的
    NoUpgrade
    条目(有关详细信息,请参阅手册页),但该文件将不再更新,其他内容可能会中断。

    foropencv4

    sudo pacman -Sy opencv vtk hdf5
    
    (可选)安装Qt

    sudo pacman -Sy qt5-base qtcreator qt5-doc gdb cmake
    
    在QtCreator中创建CMake项目

    粘贴以下内容

    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;
    }
    
    #包括
    #包括
    使用名称空间cv;
    使用名称空间std;
    int main(int argc,字符**argv)
    {
    如果(argc!=2)
    {
    printf(“用法:DisplayImage.out\n”);
    返回-1;
    }
    Mat图像;
    image=imread(argv[1],1);
    如果(!image.data)
    {
    printf(“无图像数据”);
    返回-1;
    }
    namedWindow(“显示图像”,窗口自动调整大小);
    imshow(“显示图像”,图像);
    等待键(0);
    返回0;
    }
    
    我还尝试在这里安装libhd5软件包,您到底安装了哪个OpenCV软件包<代码> opencv 不是AUR包,提供3版本。实际上,这是一个编译基础C++的必要的基础和OpenCV示例。注意,代码< Python OpenCV < /C>也需要安装。另外,
    -Syu
    是不必要的<代码>-S足够了。关于“有多个名称相似但只有一个有效的软件包”,我在官方回购协议中只看到了
    opencv
    ,尽管(像往常一样)在AUR中有很多变化,包括
    opencv cuda
    。非常感谢,我错过了这个软件包
    vtk
    :)