Linux下编译Opencv和contrib

1. 安装准备

1.1 安装依赖项

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libgtk2.0-dev pkg-config

1.2 下载opencv和contrib

去Opencv官网下载4.4.0的Sources,下好后解压
去github下载4.4.0的contrib压缩包
将contrib压缩包解压后放进之前解压好的Opencv Sources的文件夹下

Linux下编译Opencv和contrib_第1张图片

 2. 编译安装

在上图所示的文件夹中打开终端

mkdir build          
cd build               
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=YES -D OPENCV_EXTRA_MODULES_PATH=/home/yourname/opencv-4.4.0/opencv_contrib-4.4.0/modules/ ..
make -j4              
sudo make install     
 

交叉编译

cmake -D CMAKE_SYSTEM_NAME=linux -D CMAKE_C_COMPILER=/home/hkx/Tool/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc -D CMAKE_CXX_COMPILER=/home/hkx/Tool/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/hkx/YueXiang/OpenCV_ARM/OPenCV_ARM -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=YES -D OPENCV_EXTRA_MODULES_PATH=/home/hkx/YueXiang/OpenCV_ARM/opencv-3.3.1/opencv_contrib-3.3.1/modules ..
 

CMAKE_INSTALL_PREFIX是安装路径,如果没特殊需求建议就用/usr/local
OPENCV_ENABLE_NONFREE=YES是允许使用申请了专利的一些算法,必须加上这句
OPENCV_GENERATE_PKGCONFIG=ON因为opencv4默认不生成.pc文件,所以加上这句
OPENCV_EXTRA_MODULES_PATH是contrib包的路径,改成你自己的

3. 一些错误

Linux下编译Opencv和contrib_第2张图片

或者到这个下载镜像下载:boostdesc_bgm.i,vgg_generated_48.i等.rar,放在 opencv_contrib/modules/xfeatures2d/src/ 路径下 

2.关于找不到cuda.hpp的错误  找不到其他hpp也是类似这样的操作

方法:find . -name "cuda.hpp"

找到cuda.hpp这个文件的实际位置,将他的绝对路径复制下来

然后根据报错,找到相应文件并打开,将相对路径改为绝对路径

#  include "/home/hkx/Include/opencv_contrib-3.3.1/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp"

Linux下编译Opencv和contrib_第3张图片

find . -name "cuda.hpp"

会发现文件存在: ./opencv-3.4.6/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp

2、找到上述文件的路径,替换出错文件中引用cuda.hpp的位置代码即可。

四、示例代码

打开一张图片

#include
using namespace cv;
int main()
{
    Mat picture = cv::imread("1.png");
    //图片必须添加到工程目下
    //也就是和test.cpp文件放在一个文件夹下!!!
    imshow("测试程序", picture);
    waitKey(20150901);
}

你可能感兴趣的:(嵌入式项目开发,OpenCV,Linux,opencv,linux)