赞
踩
系统是ubuntu16,安装方式网上资料一大把,这里把基本流程介绍下,然后介绍下自己解决的问题:
先下载,然后安装各种依赖,然后:
(预先解决Q1,Q2的问题)
step1.生成makefile,如下是最基本的cmake选项,不用增加其他额外的就能安装成功。
cd opencv-4.1.0
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release ..
(预先解决Q6, Q7, Q8的问题)
如果是同时安装opencv和opencv_contrib,则先要把opencv_contrib解压缩到opencv主安装文件夹的根目录下,也就是opencv/opencv_contrib这样的文件夹嵌套和文件名,这是接下来cmake语句的要求结构。然后把上面语句换成如下,其中cmake的编译选项每一项都不能缺少。
cd opencv-4.1.0
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D OPENCV_ENABLE_NONFREE:BOOL=ON ..
step2.编译,make -j8,
step3.安装,sudo make install
安装过程可能的问题:
原因是github下载太慢,解决办法是手动下载,然后随便放到什么位置(我是放到opencv安装文件夹下),然后修改opencv安装文件/3rdparty/ippicv/ippicv.cmake文件中如下标记的一行,也就是指定下载文件为本地文件的路径。
ocv_download(FILENAME ${OPENCV_ICV_NAME}
HASH ${OPENCV_ICV_HASH}
URL
"${OPENCV_IPPICV_URL}"
"$ENV{OPENCV_IPPICV_URL}"
"file:///media/ubuntu/4430C54630C53FA2/SuLiang/Mysoftwares/opencv-4.1.0/" # 这行修改成自己路径
DESTINATION_DIR "${THE_ROOT}"
ID IPPICV
STATUS res
UNPACK RELATIVE_URL)
解决办法参考:https://blog.csdn.net/Splend520/article/details/97270438,也就是把build路径时的跟annaconda环境变量去除。
echo $PATH #可以看到如下显示的有跟anaconda相关的路径
/home/ubuntu/anaconda3/bin:/home/ubuntu/anaconda3/condabin:/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/cuda-9.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
export PATH=/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/cuda-9.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin # 去除
原因是权限问题,需要用sudo make install
原因是视频库”opencv2/videoio.hpp”没有安装,因为在highgui.hpp库中,可以看到如下一段,其中opencv2/videoio.hpp是处于无法链接到源文件的未安装状态。
#ifdef HAVE_OPENCV_VIDEOIO
#include “opencv2/videoio.hpp”
#endif
想了很多方法包括补充相关库都没效果,最后换一个opencv版本尝试下。
于是卸载opncv3.5: 进入opencv的build安装目录, 运行sudo make uninstall即可。
然后安装opencv4.1版本,发现在make -j8的编译过程有built target opencv_videoio.
安装完成后,正常。
cmake_minimum_required(VERSION 3.5)
project(3000_start_opencv LANGUAGES CXX)
add_definitions(-std=c++11) #c++11
find_package( OpenCV 4.1.0 REQUIRED ) #opencv
include_directories( ${OpenCV_INCLUDE_DIRS} ) #opencv
add_executable(3000_start_opencv main.cpp)
target_link_libraries( 3000_start_opencv ${OpenCV_LIBS}) #opencv
主要的文件包括:
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
需要手动去下载,然后拷贝到opencv_contrib/modules/xfeatures2d/src/路径下即可
参考的下载路径可以搜索到,这里就不提供了。
也就是找不到这个文件test_detectors_regression.impl.hpp但我在features2d/test/路径下能找到这个文件。根本原因是在contrib安装时无法链接到opencv包里边的test支持文件,解决办法就是把所有缺失的相关文件从opencv/modules/feature2d/test文件夹都拷贝到opencv/contrib/modules/xfeatures2d/test文件夹中,并且手动修改contrib中报错的那几个test_xxx文件中头文件的include路径,都从features/modules修改到本地,比如:
// #include "features2d/test/test_detectors_regression.impl.hpp"
// #include "features2d/test/test_descriptors_regression.impl.hpp"
// 上面是原代码,修改为如下形式
#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"
这是因为SIFT/SURF算法都受版权保护,不能直接使用,解决办法参考:https://answers.opencv.org/question/201938/how-can-i-set-opencv_enable_nonfree-cmake-option-and-rebuild-the-library-in-function-create/
即需要在编译时增加选项-D OPENCV_ENABLE_NONFREE:BOOL=ON
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。