在 Tegra K1 上用opencv4tegra 不包含的功能以及ROS使用OpenCV问题

简介:
(1)在NVIDIA 官方提供的opencv4tegra中,与opencv原版的包相比会缺少一些库。如果需要使用这一类库,则需要自己进行编译,当然,根据英伟达官方的说法,这会让用户失去体验opencv4tegra中专门针对CPU和GPU进行优化的一些特性(虽然笔者并没有在实际应用中体会到优化的部分,也没查到相关源代码的区别)。另一种方法,是将opencv源码与自己的项目一起编译(天啊,太复杂了)。由于笔者有多台机子,每台机子编译一遍简直太复杂了,为了解决这个问题,做了如下尝试:编译一次openCV代码,编译完以后,将确实模块的库文件找到,添加进opencv4tegra的安装路径,这样,既可以保留所谓的opencv4tegra的优良特性,同时还可以使用surf,sift等等一系列算法,简直太方便了。
(2)具体编译的过程,在这里就不具体讲了,需要注意的是,在板子上编译,记得先装好cuda,显卡的架构上必须填上Kepler,否则编译的过程,会报错。编译完成以后,makeinstall 到一个自己制定的文件夹,不要install到/user/local或者/usr之类的地方,以免替换了opencv4tegra版本的东西。
(3)Make install 以后,我们可以发现insall到的文件夹下面有lib、share、include等等文件夹。最先想到的当然是把include和lib下的nonfree模块 的lib和include文件复制到/usr/local里面了。于是,失败了。Cmake根本找不到那堆库,头文件也找不到,除非,手动指定绝对路径,当然,这个必须不是我想要的。继续比较opencv4tegra安装路径和我们自己编译包安装路径下的文件差异。首先是include里面的,在include里面,我们看到有个叫opencv_modules.hpp的文件,打开,加上nonfree模块的include。这回,cmake可以找到include文件了。然而,lib文件,还是悲剧了。继续查找,在pkgconfig的opencv.pc里面发现问题了,这里面要手工在Libs里面添加上-lopencv_nonfree。然后,问题还出在share文件夹里面这里面几个文件挺关键的,关系到cmake能否找到这堆库。Cmake需要在这些文件里预先定义这些库的路径和信息,对比这几个文件,把nonfree模块的信息从我们自己编译的包里面复制过来。Ok,大功告成。这回可以使用sift和surf算法了。
       为了方便大家,笔者根据自己编译的模块和做的改动写了个脚本,并把需要替换的文件一并发出来。拿到Opencv_nonfree_ocl以后解压,直接以管理员身份运行installnonfree.sh即可安装opencv中nonfree和ocl的库。
       此外,在使用ROS过程中,还发现ROS找不到opencv库的错误,这是由于ROS找的是opencv2.4.8的库,而opencv4tegra用的是2.4.12的库,找不到文件导致的。解决方法是修改ROS的设置文件。文件位置在\opt\ros\jade\lib\pkgconfig\cv_bridge.pc,打开,将里面的Libs一行里面的2.4.8改成2.4.12即可

此文章来自Jetson技术大咖Br2原创,转载请标明出处。

Opencv_nonfree_ocl.rar

651.54 KB, 下载次数: 0


原文发布时间为:2016-7-14 15:26:48
原文由:十四王爷 发布,版权归属于原作者 
本文来自云栖社区合作伙伴NVIDIA,了解相关信息可以关注NVIDIA官方网站
相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
8月前
|
弹性计算 数据安全/隐私保护 计算机视觉
|
8月前
|
弹性计算 数据安全/隐私保护 计算机视觉
|
8月前
|
弹性计算 数据安全/隐私保护 计算机视觉
|
8月前
|
弹性计算 数据安全/隐私保护 计算机视觉
|
8月前
|
弹性计算 数据安全/隐私保护 计算机视觉
|
9月前
|
机器学习/深度学习 算法 决策智能
ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别(下)
ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别(下)
248 0
|
9月前
|
存储 机器学习/深度学习 编解码
ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别(上)
ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别(上)
179 0
|
测试技术 计算机视觉
将ros的图像 转换成 opencv的图像并求距离
将ros的图像 转换成 opencv的图像并求距离
将ros的图像  转换成 opencv的图像并求距离
|
Ubuntu 计算机视觉
Ubuntu环境下ROS安装自己OPENCV版本(下)
Ubuntu环境下ROS安装自己OPENCV版本(下)
Ubuntu环境下ROS安装自己OPENCV版本(下)
|
Ubuntu Shell 开发工具
Ubuntu环境下ROS安装自己OPENCV版本(上)
Ubuntu环境下ROS安装自己OPENCV版本(上)
Ubuntu环境下ROS安装自己OPENCV版本(上)

推荐镜像

更多