机器人视觉项目:视觉检测识别+机器人跟随(10)

1、 陈述当天的任务;

修改特征匹配,结合行人检测opencv库,对添加了特征匹配的代码后不能通过编译后的问题,问题是围绕着opencv版本,网上的相关解答也是说opencv版本不兼容,在opencv2.0版本有个nonfree库可以很方便的使用,而在Opecv3.0已经移除了这个库,导致

SurfFeatureDetector detector(minHessian);

出现报错,说没有surfFeatureDetector的定义,后面还有一些报错

img1 = CvCreatImage(size1, frame->depth, frame->nChannels);
CvSetImageROI(frame, rectInImage1);
cvCopy(img1, frame);
detector.detect(img1, keypoint1);
SurfDescriptorExtractor extractor;
extractor.compute(img1, keypoint1, descriptor1);

以上都是报错的语句。

2、 任务完成情况;

特征的匹配在代码调试阶段,尝试用另一台工控机编译行人跟随包,opencv安装2.0的包,然后可以把ros里面的opencv卸载掉,用指定的2.0的包,使用nonfree库,编译跟随包。

3、任务中的突发事件;

已经能够比较不错的实现跟随,关于特征匹配来处理跟丢的情况,不确定效果是否会好,一方面是对视频的图像进行特征提取和匹配的计算量挺大的,即使仅仅是跟丢后再提取特征,可能会在计算力不足,提取特征肯定会在匹配时排除掉一些目标,这样会时跟丢后再次匹配到行人的时间花费变长。

4、任务过程中遇到的困难及原因分析

Ptr<SURF> detector = SURF::create( );

含有surf特征提取算法在OpenCV2.0版本中是放在nonfree头文件中。 换成了3.0版本之后,对nonfree模块测试的还不够,所以暂时还没有直接给出像之前2.0版本那样方便的nonfree库。 而是放在了xfeatures2d头文件和xfeatures2d库中。 xfeatures2d比nonfree多了实验性二维征算法(Experimental 2D Features Algorithms)。 想在3.0版本中使用SURF的话,暂时需要自己对OpenCV进行编译。 只是在编译之前,还需要下载opencv_contrib,然后在编译时将其modules文件夹路径 添加到CMAKE中的OPENCV_EXTRA_MODULES_PATH通过编译得到xfeatures2d的库文件就OK了。 使用时的语法也变了。 创建检测器要用Ptr<SURF> detector = SURF::create( ); 而不再是SurfFeatureDetector detector( );

猜你喜欢

转载自blog.csdn.net/Synioe/article/details/82793380