sgdd.net
当前位置:首页 >> opEnCv siFt 怎么用 >>

opEnCv siFt 怎么用

这几天继续在看Lowe大神的SIFT神作,看的眼花手脚抽筋.也是醉了!!!!实在看不下去,来点干货.我们知道opencv下自带SIFT特征检测以及MATCH匹配的库,这些库完全可以让我们进行傻瓜似的操作.但实际用起来的时候还不是那么简

#include #include //Thanks to Alessandroint main(int argc, const char* argv[]){ const cv::Mat input = cv::imread("input.jpg", 0); //Load as grayscalecv::SiftFeatureDetector detector; std::vector keypoints; detector.detect(input, keypoints);// Add

opencv_core249d.lib opencv_imgproc249d.lib opencv_highgui249d.lib opencv_ml249d.lib opencv_video249d.lib opencv_features2d249d.lib opencv_calib3d249d.lib opencv_objdetect249d.lib opencv_contrib249d.lib opencv_legacy249d.lib opencv_flann249d.lib 这里面好像有你需要的源文件

没看过这个源码,猜的1 这里应该是只用了距离的部分,没有用旋转的部分.只为了求中心点位置,所以最后画出来的框应该没有角度倾斜的.2 不知道3 OpenCV中的SIFT SURF都很慢,做不到实时的.SIFT的特征点提取太慢了,而且描述默认128个float导致匹配也比较慢,除非修改算法部分.如果是跟踪的话,用OpenCV的KLT光流,或者模版匹配都能快很多(20ms以内).findHomography这个最后一个参数,可以修改为RANSAC或者PROSAC的实现版本.比LMEDS快好多倍.

<code>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/nonfree/features2d.hpp> //Thanks to Alessandroint main(int argc, const char* argv[]){

建立一个新工程,将match.c文件加进去,然后一个一个文件加.提示少那个就加哪个.匹配用的就是match里的内容.

解决思路如下:sift匹配分为两部分,第一部分,sift特征点检测; 第二部分,sift对特征点进行描述. 我建议你用harris或者其他的特征点提取方法做第一部分,这样检测的特征点可能会多些.希望能够帮到你~

哈哈,我有一个基于opencv实现的sift,我把代码贴出来,你自己看看吧~~~void sift_detector_and_descriptors(IplImage* i_left,IplImage* i_right){Mat mat_image_left=Mat(i_left,false);Mat mat_image_right=Mat(i_right,false);cv::SiftFeatureDetector

应该是依赖的某些lib没有添加,把opencv有关的lib比如features2d / flann / contrib 什么的都填进去试试

opencv3.0 有一个opencv_contrib-master的补充库,在modules的xfeature里面,对sift类的声明在include文件夹的nonfree.hpp里,sift算法的实现在src文件夹里面的sift.cpp里面

网站首页 | 网站地图
All rights reserved Powered by www.sgdd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com