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(解决无法读取图片和视频的问题)的主要内容,如果未能解决你的问题,请参考以下文章
opencv debug版本在linux下编译,并写了一个DEMO