Linux下编译Opencv和contrib

本文档详细介绍了在Ubuntu系统中编译和安装OpenCV 4.4.0的过程,包括安装依赖、下载源码、配置编译选项以及解决编译过程中可能出现的问题。同时,提到了如何启用非免费模块和生成pkgconfig文件,适用于交叉编译至aarch64平台。最后,提供了一个简单的OpenCV示例代码来展示如何读取和显示图片。
摘要由CSDN通过智能技术生成

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的文件夹下

 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. 一些错误

或者到这个下载镜像下载: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"

find . -name "cuda.hpp"

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

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

四、示例代码

打开一张图片

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_42475191

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值