视觉学习二 ——在虚拟机中移植RMVision(一)

来源:互联网 发布:英敏特信息咨询 知乎 编辑:程序博客网 时间:2024/06/06 01:56

视觉学习二

——在虚拟机中移植RMVision(一)

一.  RMVision个人见解

RMVision是第一赛季3组算法技术文档,从RM官方论坛即可下载。它包含了神符检测装甲检测两部分。当然,既然是第一赛季的技术文档,大神符也必定是对应第一赛季的。但装甲检测却可以通用。至于该算法的具体事宜,直接阅读它的技术报告已经很详细了,以后慢慢解析。

由于学校资源有限,妙算不可能人手一台,因此,对视觉的开发,往往需要在个人的电脑上测试,因此引发了一系列问题。

二.  妙算中使用 

因为本身该算法即为妙算开发,因此只要严格按照README中的要求装,问题不会很大。但是依旧有几个注意事项。

首先,我们先看它的要求:

1.系统:Ubuntu 14.04

2.配置环境:Qt Creator

3.编译器选择:gcc或g++

4.OpenCV 3.0.0以上。

5.camera 直接连妙算USB接口。

当然,它的要求显然是默认已经将妙算使用手册中的cube等东西安装正确,具体操作方式详见本人博客妙算使用笔记。其次,Qt Creator从ubuntu软件中心安装即可。最后,camera型号在算法技术文档中提到,一切正常。

然而,有下面几点是README中未提及的:

(1) 算法路径:

将解压出的 算法代码 文件夹重命名为 RMVision ,并将其移至“/home/ubuntu/projects/RMVision/”目录下。

这样,工程文件 RMVision.pro 所处的目录应为:“/home/ubuntu/projects/RMVision/ RMVision/RMVision.pro

(2) Opencv版本问题:

虽然说明文档中提及opencv版本3.0.0及以上,但实测当使用opencv3.0.0-alpha版本时,有些地方的使用方法已经改变,而3.2.0及以上测试时均无此影响。

出错的部分为OBR的使用,在3.0.0中改变了其使用方式,可能是在后面的版本中又添加回来所以3.0.0不能使用而后续版本却可以使用。

关于OBR,它是特征提取算法,其原理可以参考这里:

http://blog.csdn.net/yang843061497/article/details/38553765

而在3.0.0中,可以通过更改它的源文件来重新使用这种方式,也可以按照新的规则来重写这部分。我认为,直接将该部分屏蔽掉,可能会出现无法识别装甲特征的问题,只是空跑程序。最简单的方式还是安装最新版opencv。

(3) 算法中本身的错误:

首先,该算法在pro文件中疑似多引用了hal头文件,而在目前安装的opencv中并无法找到,将其屏蔽掉之后,运行正常。但不保证该问题是个错误,可能还有其他的坑。

其次,在RuneDetector.cpp文件的第79行中,有个变量consrc_csmtours将其改为contours。论坛中dalao们解释了这个问题,我认为这个可能是作者不小心的手误造成的。

 

三.  在虚拟机中配置

在本人的虚拟机中,至今还没有成功解决所有问题,但是已经能够运行,只是摄像头还不能正常工作。

1.     摄像头问题:

在Linux中,大部分摄像头驱动已经做好了,可以说绝大多数摄像头应该可以免驱使用。

而本人笔记本的摄像头为Webcam,网上搜索了一下,大多数Webcam已经支持了,但是存在少部分可能不兼容。在第一次使用时,本人的摄像头卡住,图像变花。而后来换过摄像头之后能够使用了,但在运行算法代码时并不能弹出摄像头采集的视频。

根据网上查找的资料推测,大概有一下两种可能:

(1)安装opencv前,没有安装好有关摄像头支持的所有依赖。

(2)虚拟机不支持。

前者解决方案为装好全部需要的依赖,重装opencv。后者则只能在主机中运行了。

2.     内核问题

目前,绝大多数笔记本芯片还是Intel的x86结构,而妙算是arm核且为armv7。

(1)算法代码中.pro文件中注释掉有关配置。

(2)删除头文件sse_to_neon.hpparm_neon.h的包含。

关于arm_neon:

http://blog.csdn.net/hemmingway/article/details/44831459

该帖中介绍:

ARM ENON技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D图形、游戏、音频和语音处理、图像处理技术、电话和声音合成),其性能至少为ARMv5性能的3倍,为ARMv6 SIMD性能的2倍。NEON技术是ARM Cortex-A系列处理器的128位SIMD架构扩展,旨在为消费性多媒体应用程序提供灵活、强大的加速功能。

从ARMv7开始ARM提供高级单指令多数据(SIMD)扩展亦称NEON技术,它是一种由ARM开发的64/128位混合SIMD体系结构,可以提升多媒体和信号处理应用程序的性能。

四.  在虚拟机中运行效果

由于没有装甲模块测试,故截图只表明能够编译通过但存在一定问题。比如无法关闭手动曝光。

 

阅读全文
0 0
原创粉丝点击