Python 如何在arch linux上安装OpenCV
我尝试过使用aur包在arch上安装opencv。它已成功安装,但当我尝试在python中导入opencv2时,出现以下错误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版,有多个名称相
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
:)