200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > ubuntu 16.04 编译 opencv_contrib 3.4 nonfree

ubuntu 16.04 编译 opencv_contrib 3.4 nonfree

时间:2019-04-20 17:38:54

相关推荐

ubuntu 16.04 编译 opencv_contrib 3.4  nonfree

由于专利原因,3.0以后,opencv中的某些功能做了默认的剔除,如果需要安装需要自己单独编译。

Part I 3.0 以下版本

对于低版本的比如2.4.x, ubuntu 下可以直接安装,方法如下:

sudo apt-get updatesudo add-apt-repository --yes ppa:xqms/opencv-nonfreesudo apt-get updatesudo apt-get install libopencv-nonfree-dev

也可参见:Ubuntu 安装 opencv-nonfree

Part II 3.0以上版本

首先,需要下载和版本一直的opencv 和opencv_contrib

其次使用cmake-gui, 工具生成Makefile

编译opencv_contrib需要配置两个变量,如下图

然后,执行Configure和Generate

Part III 遇到的问题

问题1

Cmake error at

opencv_contrib-master/modules/datasets/CMakeLists.txt:5 (ocv_append_source_files_cxx_compiler_options):

Unknown CMake command “ocv_append_source_files_cxx_compiler_options”.

解决方法:

注释掉下面这行(文件中行号5)

opencv_contrib-master/modules/datasets/CMakeLists.txt:5 (ocv_append_source_files_cxx_compiler_options):

也就是不执行这个没有定义的命令

问题2

CV_OVERRIDE 不识别

解决方法:

全部替换成override

问题 3

CV_FINAL不识别

解决方法:

全部替换成final

问题4

opencv-3.4.0/opencv_contrib/modules/bioinspired/src/retina_ocl.cpp: In member function ‘virtual const cv::Mat cv::bioinspired::ocl::RetinaOCLImpl::getMagnoRAW() const’:

opencv-3.4.0/opencv_contrib/modules/bioinspired/src/retina_ocl.cpp:451:65: error: no return statement in function returning non-void [-Werror=return-type]

const Mat RetinaOCLImpl::getMagnoRAW() const { NOT_IMPLEMENTED; }

^

opencv-3.4.0/opencv_contrib/modules/bioinspired/src/retina_ocl.cpp: In member function ‘virtual const cv::Mat cv::bioinspired::ocl::RetinaOCLImpl::getParvoRAW() const’:

opencv-3.4.0/opencv_contrib/modules/bioinspired/src/retina_ocl.cpp:452:65: error: no return statement in function returning non-void [-Werror=return-type]

const Mat RetinaOCLImpl::getParvoRAW() const { NOT_IMPLEMENTED; }

^

opencv-3.4.0/opencv_contrib/modules/bioinspired/src/retina_ocl.cpp: In member function ‘bool cv::bioinspired::ocl::RetinaOCLImpl::convertToColorPlanes(const cv::UMat&, cv::UMat&)’:

opencv-3.4.0/opencv_contrib/modules/bioinspired/src/retina_ocl.cpp:395:1: error: control reaches end of non-void function [-Werror=return-type]

解决方法:

395行那个

在最后一个else分之后改为

CV_Error(-1, “Retina ocl only support 1, 3, 4 channel input”);

return false;

451和452行,函数没有实现导致的

const Mat RetinaOCLImpl::getMagnoRAW() const { NOT_IMPLEMENTED; return Mat();}

const Mat RetinaOCLImpl::getParvoRAW() const { NOT_IMPLEMENTED; eturn Mat();}

问题5

其他test目录下的文件的编译出错问题,为了省时间,不做修改,直接删除这些测试用文件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。