如何在 arch 上安装 OpenCV linux
How to install OpenCV on arch linux
我试过使用 aur 包在 arch 上安装 opencv。它已成功安装,但是当我尝试在 python 中导入 opencv2 时,出现以下错误
ImportError: libhdf5.so.100: cannot open shared object file: No such file or directory
不只是 python ,甚至当我尝试 运行 使用它的 c++ 示例代码时,我也遇到了同样的错误。我试过在网上搜索,发现有几个人遇到了类似的问题,但我仍然无法解决。
我已经安装了 Open CV 3.2 版
有多个名称相似的包,但只有一个有效。
如果你还没有安装OpenCV,运行:
pacman -S opencv
pacman -S python-opencv
安装hdf5:
pacman -S hdf5
请注意,instructions for Sikuli,它依赖于 OpenCV,表示在 /usr/lib
中需要一个符号 link。系统升级可能会破坏 link,必须重新创建它以指向最新版本的 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
.
有 2 种可能的解决方法:
sudo pacman -S hdf5 vtk
(占用大约 231.24 MiB
内存)
- 如果您的程序不需要
hdf5
和 vtk
,请从 /usr/lib/pkgconfig/opencv4.pc
中删除 -lopencv_hdf
和 -lopencv_viz
(以防程序使用 pkg-config
), 或在编译时删除 2 个标志。
警告:如果您使用解决方法 2,opencv
包的更新将还原这些更改。您可能希望将它们添加为 pacman.conf
中的 NoUpgrade
条目(有关详细信息,请阅读手册页),但该文件将不再更新,其他内容可能会损坏。
对于 opencv4
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;
}
我试过使用 aur 包在 arch 上安装 opencv。它已成功安装,但是当我尝试在 python 中导入 opencv2 时,出现以下错误
ImportError: libhdf5.so.100: cannot open shared object file: No such file or directory
不只是 python ,甚至当我尝试 运行 使用它的 c++ 示例代码时,我也遇到了同样的错误。我试过在网上搜索,发现有几个人遇到了类似的问题,但我仍然无法解决。
我已经安装了 Open CV 3.2 版
有多个名称相似的包,但只有一个有效。
如果你还没有安装OpenCV,运行:
pacman -S opencv
pacman -S python-opencv
安装hdf5:
pacman -S hdf5
请注意,instructions for Sikuli,它依赖于 OpenCV,表示在 /usr/lib
中需要一个符号 link。系统升级可能会破坏 link,必须重新创建它以指向最新版本的 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
.
有 2 种可能的解决方法:
sudo pacman -S hdf5 vtk
(占用大约231.24 MiB
内存)- 如果您的程序不需要
hdf5
和vtk
,请从/usr/lib/pkgconfig/opencv4.pc
中删除-lopencv_hdf
和-lopencv_viz
(以防程序使用pkg-config
), 或在编译时删除 2 个标志。
警告:如果您使用解决方法 2,opencv
包的更新将还原这些更改。您可能希望将它们添加为 pacman.conf
中的 NoUpgrade
条目(有关详细信息,请阅读手册页),但该文件将不再更新,其他内容可能会损坏。
对于 opencv4
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;
}