Linux系统下编译OpenCV(解决无法读取图片和视频的问题)

Posted 不变强不改名

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统下编译OpenCV(解决无法读取图片和视频的问题)相关的知识,希望对你有一定的参考价值。

1. 下载源码

首先下载opencv的源码,链接:

Releases - OpenCVhttps://opencv.org/releases/2. 安装工具包

· Cmake 、GCC 、Git 、GTK+2.x 或更高版本, including 头 (libgtk2.0-dev)、pkg-config、python、ffmpeg或libav开发包;

直接sudo apt install 就可以了,如果报错就输入 工具包name --version(如ffmpeg --version),查看提示。

3. 安装依赖

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

如果提示 E: 无法定位软件包 libjasper-dev

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

再次运行如下命令:

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

不安装依赖项并不会影响编译通过,但会导致opencv无法读取图片、视频。

4. 编译

解压源码,在源码文件夹中新建build文件夹并进入

unzip opencv.tar

cd opencv

mkdir build

cd build

生成makefile文件

cmake -DWITH_GTK_2_X=ON -DCMAKE_INSTALL_PREFIX=/usr/local WITH_FFMPEG ..

编译

make

安装头文件、依赖库

make install

绿色标出的为编译过程,安装工具包,配置依赖项可以是为了使Opencv可以正常运行。

安装完成后会在usr/local/include、usr/local/lib、usr/local/bin文件夹中找到刚才编译的头文件和依赖库,然后在cpp中就可以使用 #include <opencv2/opencv.hpp>了。

5. 参考链接

Ubuntu 18.04.2下编译安装OpenCV 3.4.0 过程_Linux教程_Linux公社-Linux系统门户网站 (linuxidc.com)

关于Linux下使用OpenCv读取视频打不开的问题 - 韶子 - 博客园 (cnblogs.com)

在linux下编译opencv for android

cd /home/ahfu
#选择opencv 3.4.6版本来编译
wget https://github.com/opencv/opencv/archive/3.4.6.tar.gz
tar -zxvf opencv-3.4.6.tar.gz
wget https://codeload.github.com/opencv/opencv_contrib/tar.gz/3.4.6
tar -zxvf opencv_contrib-3.4.6.tar.gz
#下载ndk
wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
unzip android-ndk-r14b-linux-x86_64.zip
export PATH=$PATH:/home/ahfu/android-ndk-r14b
# 注意,我一开始使用了NDK版本 android-ndk-r19c-linux-x86_64.zip,结果一堆问题
#下载ANDROID SDK
wget https://dl.google.com/android/repository/tools_r25.2.5-linux.zip
unzip tools_r25.2.5-linux.zip
export PATH=$PATH:/home/ahfu/
# 注意,一开始我下载了android sdk版本 android-sdk_r24.4.1-linux.tgz,有问题
#下载编译工具ninja
wget https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip
unzip ninja-linux.zip
export PATH=$PATH:/home/ahfu/

#建立编译目录
cd opencv-3.4.6
mkdir build && cd build
#开始config
python build_sdk.py /home/ahfu/opencv-3.4.6/build /home/ahfu/opencv-3.4.6/ --ndk_path=/home/ahfu/android-ndk-r14b --extra_modules_path=/home/ahfu/opencv_contrib-3.4.6/modules --sdk_path=/home/ahfu
#因为我的编译机不能连接互联网,所以在下载文件的阶段报错
#没关系,手动完成配置
cd o4a #前面的配置脚本已经生成了这个目录
ccmake ../..
#关闭很多不需要的选项
#BUILD_opencv_features2d=OFF
#CMAKE_BUILD_TYPE=Release
#按c, 按g
#呼唤忍者来编译
ninja
#最后看见
#[850/850] Linking CXX static library lib/armeabi-v7a/libopencv_tracking.a
#编译成功
ls -l lib/armeabi-v7a/
#android下的各个库都编译成功了

#明天继续写个程序验证能不能在android下面跑起来

 

以上是关于Linux系统下编译OpenCV(解决无法读取图片和视频的问题)的主要内容,如果未能解决你的问题,请参考以下文章

linux下编译opencv

在linux下编译opencv for android

opencv debug版本在linux下编译,并写了一个DEMO

linux环境下编译运行OpenCV程序的两种方法

linux下编译出现warning :ld-linux.so.3,needed by

opencv系列之ubuntu系统下编译python版本的opencv(指定特定的ffmpeg)