解决OpenCV xfeatures2d_SURF -213:功能/功能未实现。(-213:The function/feature is not implemented) This algorith

本文解决xfeatures2d_SURF -213问题,也就是SURF,SIRF算法使用xfeatures2d这个的权限问题

看了很多篇博客都不管用,三天解决了。按这个来就没问题。

本篇文章解决了SURF,SIRF算法使用xfeatures2d这个的权限问题。

不管你是ubuntu18.04还是ubuntu20.04还是其他版本,要安装的版本不是opencv4.2.0也没事,你要安装什么版本就下载什么版本的opencv和opencv_contrib。(opencv_contrib是扩展功能,就按我的步骤一步步安装操作就行)

问题描述:

问题是在使用sift/surf等算法时报错:

terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.2.0) /home/cgm/opencv-4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/src/surf.cpp:1027: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create'
  已放弃 (核心已转储)

OpenCV xfeatures2d_SURF -213:未实现功能/功能

错误:(-213:未实现功能/功能)此算法已申请专利,并且在此配置中不包括在内;设置OPENCV_ENABLE_NONFREE CMake选项并在函数’cv :: xfeatures2d :: SURF :: create’中重建库

问题原因:

xfeature2d此算法申请了专利。然而我们安装opencv时没有增加 这个命令 -DOPENCV_ENABLE_NONFREE=ON \ 导致的

解决办法

看了很多篇博客,最终解决了这个问题。有的说降低版本啥的,试了不管用。简单粗暴又快的方法-那就是重装opencv,不要怕不会卸载重装。这篇很详细。按步骤一步一步往下走。

1.卸载

找到当初安装 opencv4.2.0的 build 目录,进入 build 目录

cd ~/opencv-4.1.2/build
sudo make uninstall
cd  ..
sudo rm -rf build

清理 /usr 中所有 opencv 相关项,直接复制粘贴到终端运行。这一步删不干净不影响,接着往下

 //注意这里为了确保删干净重复写了一些路径,建议大家打开文件夹对照代码所示路径一个个删除
    sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
     
    cd /usr
    //发现搜不到有关opencv的任何文件,说明删干净了
    find . -name "*opencv*" | xargs sudo rm -rf
    cd ~
    sudo rm -rf opencv-4.2.0

2.下载安装

下载opencv4.2.0和opencv_contrib-4.2.0源码压缩包

opencv4.2.0 地址https://github.com/opencv/opencv/tree/4.2.0

opencv_contrib-4.2.0地址https://github.com/opencv/opencv_contrib

首先在终端中输入如下命令来安装依赖包:

sudo apt  install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev  
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev  
sudo apt  install build-essential qt5-default ccache libv4l-dev libavresample-dev  libgphoto2-dev libopenblas-base libopenblas-dev doxygen  openjdk-8-jdk pylint libvtk6-dev

3、配置opencv

1、将opencv4.2.0和opencv_contrib-4.2.0解压(提取),放在一个文件夹opencv-4.2.0下,如下图所示:

在这里插入图片描述再将boostdesc.i等.zip里的文件全部复制到~/opencv-4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/src下(因为这些文件很难载下来,缺少这一步的话,后续编译就会报错)

在这里下载boostdesc.i等.zip里的文件

百度云链接:https://pan.baidu.com/s/14Q7N1p-7QrUBQzGIAPCWBw 密码: spgp

在这里插入图片描述

2、双击进入解压出来的opencv-4.2.0文件夹,右键打开终端,然后依次输入

   mkdir build
    cd build 

3.然后进行cmake编译,参数可自行调整:(这一步是重点)


//前三行别的设不设置都无所谓,OPENCV_GENERATE_PKGCONFIG如果不设置在opencv4中就不会
//自动生成opencv.pc文件导致查询不到opencv版本号,后续要解决只能自己手写文件(但是容易错)
//或者卸载opencv重装,所以这里直接开启就一劳永逸了
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON .. 
cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=ON ..
cmake -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF ..
//OPENCV_ENABLE_NONFREE:BOOL如果不开启在使用sift/surf等算法时会报错
//因为我是用c++进行编程 所以用INSTALL_C_EXAMPLES=ON,如果想用python则替换为INSTALL_PYTHON_EXAMPLES=ON
//OPENCV_EXTRA_MODULES_PATH后面跟的是opencv_contrib-4.1.2的路径,记得照着自己的电脑路径改一下
//如果不需要装opencv_contrib-4.1.2 那就删掉OPENCV_EXTRA_MODULES_PATH
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_ENABLE_NONFREE:BOOL=ON -D INSTALL_C_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv-4.1.2/opencv_contrib-4.1.2/modules ..

接下来开始编译

 //有单线程和多线程两种编译方法 单线程编译比较慢,建议采用多线程
    //j后面表示的数字是想要用几线程进行编译,这里我选择了8线程,直接复制不用管
   
    sudo make -j8

编译结束后

sudo make install 

4.配置opencv环境

  //打开opencv.conf
    sudo gedit /etc/ld.so.conf.d/opencv.conf 
    //在末尾添加
    /usr/local/lib
    //保存后执行以下命令,确保配置生效
    sudo ldconfig 
    //打开bash.bashrc
    sudo gedit /etc/bash.bashrc  
    //在文末添加
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
    export PKG_CONFIG_PATH  
   

5.测试

 cd ~/opencv-4.1.2/samples/cpp/example_cmake
    cmake .
    make
    ./opencv_example

如果摄像头打开,左上角出现 Hello OpenCV 则证明安装成功

安装参考链接:地址

参考链接2:地址

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农小C

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值