恳求SIFT特征提取的查看opencv源代码码?谢谢啦!望早日回复!

>> 基于opencv实现sift特征提取和匹配
基于opencv实现sift特征提取和匹配
所属分类:
下载地址:
基于SIFT特征提取.zip文件大小:7.57 kB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
这是一个基于opencv的sift算法的实现,基于opencv实现sift特征提取和匹配
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
SIFT.dsp3.30 kB 16:19
SIFT.dsw516.00 B 16:20
SIFT.ncb33.00 kB 16:20
SIFT.opt47.50 kB 16:20
SIFT.plg14.51 kB 16:20
3.40 kB 16:43
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
jiajing1566最近一直在做这个,如果能帮到忙就太好了。谢谢up主
评价成功,多谢!
下载基于SIFT特征提取.zip
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:115.624ms - init:0.1;find:0.6;t:0.6;tags:0.2;related:72.8;comment:2.0; 5.8
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧【OpenCV】SIFT特征提取 - CSDN博客
【OpenCV】SIFT特征提取
自己mark下
#include &iostream&
#include &fstream&
#include &opencv2/opencv.hpp&
#include &opencv2/highgui/highgui.hpp&
#include &opencv2/features2d/features2d.hpp&
#include &opencv2/nonfree/nonfree.hpp&
#include &vector&
#include &string&
#include &tchar.h&
#include &io.h&
void getFiles( string path, string exd, vector&string&& files )
//文件句柄
//文件信息
struct _finddata_
string pathName, exdN
if (0 != strcmp(exd.c_str(), &&))
exdName = &\\*.& +
exdName = &\\*&;
if((hFile = _findfirst(pathName.assign(path).append(exdName).c_str(),&fileinfo)) !=
//如果是文件夹中仍有文件夹,迭代之
//如果不是,加入列表
if((fileinfo.attrib &
_A_SUBDIR))
if(strcmp(fileinfo.name,&.&) != 0
strcmp(fileinfo.name,&..&) != 0)
getFiles( pathName.assign(path).append(&/&).append(fileinfo.name), exd, files );
if(strcmp(fileinfo.name,&.&) != 0
strcmp(fileinfo.name,&..&) != 0)
files.push_back(pathName.assign(path).append(&/&).append(fileinfo.name));
}while(_findnext(hFile, &fileinfo)
_findclose(hFile);
int _tmain(int argc, _TCHAR* argv[])
char * filePath = &C:/数据集/图片集/Data&;
vector&string&
//ofstream outfile(&C:/abc.txt&);
//获取该路径下的所有jpg文件
getFiles(filePath, &jpg&, files);
int size = files.size();
for (int i = 0;i &i++)
cout&&files[i].c_str()&&
Mat input1 = imread(files[i].c_str(), CV_LOAD_IMAGE_GRAYSCALE);
for (int i = 0;i &i++)
Mat input2 = imread(files[i].c_str(), CV_LOAD_IMAGE_GRAYSCALE);
if (input1.empty()||input2.empty())
cout && &不能正常加载图片& &&
system(&pause&);
return -1;
/************************************************************************/
/*下面进行提取特征点*/
/************************************************************************/
SiftFeatureD
vector&KeyPoint& kerpoints1;
feature.detect(input1, kerpoints1);
Mat output1;
drawKeypoints(input1, kerpoints1, output1);
vector&KeyPoint& kerpoints2;
feature.detect(input2, kerpoints2);
Mat output2;
drawKeypoints(input2, kerpoints2, output2);
//imshow(&提取特征点后的box.png&, output1);
//imshow(&提取特征点后的box_in_scene.png&, output2);
//imwrite(&提取特征点后的box.png&, output1);
//imwrite(&提取特征点后的box_in_scene.png&, output2);
// cout && &box提取的特征点数为:& && kerpoints1.size() &&
// cout && &box_in_scene的特征点数为:& && kerpoints2.size() &&
/************************************************************************/
/* 下面进行特征向量提取 */
/************************************************************************/
SiftDescriptorE
Mat description1;
pute(input1, kerpoints1, description1);
Mat description2;
pute(input2, kerpoints2, description2);
/************************************************************************/
/* 下面进行特征向量临近匹配 */
/************************************************************************/
vector&DMatch&
FlannBasedM
Mat image_
matcher.match(description1, description2, matches);
/************************************************************************/
/* 下面计算向量距离的最大值与最小值 */
/************************************************************************/
double max_dist = 0, min_dist = 100;
for (int i = 0; i & description1. i++)
if (matches.at(i).distance&max_dist)
max_dist = matches[i].
if (matches[i].distance&min_dist)
min_dist = matches[i].
//cout && &最小距离为& && min_dist &&
//cout && &最大距离为& && max_dist &&
/************************************************************************/
/* 得到距离小于而V诶最小距离的匹配 */
/************************************************************************/
vector&DMatch& good_
for (int i = 0; i & matches.size(); i++)
if (matches[i].distance&2*min_dist)
good_matches.push_back(matches[i]);
//cout &&&第一个图中的&&& matches[i].queryIdx&&&匹配了第二个图中的&&&matches[i].trainIdx&&
//drawMatches(input1, kerpoints1, input2, kerpoints2, good_matches, image_match);
//imshow(&匹配后的图片&, image_match);
//imwrite(&匹配后的图片.png&, image_match);
cout && &匹配的特征点数为:& && good_matches.size() &&
ofstream outfile(&D:/abc.txt&,ios::app);
outfile&&good_matches.size() &&& &;
ofstream outfile(&D:/abc.txt&,ios::app );
outfile && &;& &&
// Mat input1 = imread(&C:/数据集/图片集/Data/001.jpg&, CV_LOAD_IMAGE_GRAYSCALE);
Mat input2 = imread(&C:/数据集/图片集/Data/002.jpg&, CV_LOAD_IMAGE_GRAYSCALE);
//waitKey(0);
//system(&pause&);
本文已收录于以下专栏:
相关文章推荐
本文实验为自己原创,转载请注明出处。
本人为研究生,最近的研究方向是物体识别。所以就将常用的几种特征提取方式做了一个简要的实验和分析。这些实验都是借助于openCV在vs2010下完成的。基本上都是使...
看到OpenCV2.4.6里面ORB特征提取算法也在里面了,套用给的SURF特征例子程序改为ORB特征一直提示错误,类型不匹配神马的,由于没有找到示例程序,只能自己找答案。
(ORB特征论文:O...
SIFT算法的过程实质是在不同尺度空间上查找特征点(关键点),用方向向量的方式对特征点进行描述,最后通过对比描述向量实现目标匹配。
概括起来主要有三大步骤:
1、提取关键点;
2、对关键点附加详细...
opencv中sift特征提取的步骤
使用SiftFeatureDetector的detect方法检测特征存入一个向量里,并使用drawKeypoints在图中标识出来
SiftDescripto...
Opencv里面,特征提取可以分为两步进行:
SIFT特征提取及其opencv实现SIFT特征提取算法的实质是寻找图像中对位置、尺度、旋转等保持不变的关键点,其步骤主要有如下四步:
尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识...
本人是图像处理界的新手一枚,最近两天搞一下SIFT特征提取的程序编写工作。将整体的构建以及问题解决过程抛出来,给后来人以警示,同时作为科研道路上的一些笔记之用,并欢迎高手批评指点。接下来拉开序幕。
SIFT特征提取分析
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)您好!您的登录名为, 您已经成功登陆金桥论坛!
当前位置:--汽车论坛- 正文
车牌识别 opencv 代码opencv车牌识别,opencv车牌识别源码,基于opencv的车牌识别,opencv车牌识别程序,opencv车牌字符识别,opencv3.3 车牌识别,opencv车牌识别系统,opencv vs 车牌识别,opencv车牌识别算法,opencv java 车牌识别,opencv实现车牌识别,opencv车牌识别论文,车牌识别代码,matlab车牌识别代码,车牌识别代码是什么从零使用OpenCV快速实现简单车牌识别系统_千寻文档发表时间:日 -
OpenCV只是一个提供基本图像处理方法的工具库,具体应用到车牌识别系统中,需要综合实用图像处理方法,可不能指望OpenCV中直接有个函数...6-vc6.0基于opencv1.0的车牌识别程序源代码_51CTO下载中心_IT...简介:摘要:VC/C++源码,报表打印,车牌识别 基于vc6.0和opencv1.0的车牌识别,本程序开发环境:vc6.0 opencv1.0。 整体功能:是为了实...opencv车牌识别源码-CSDN下载缺少Cvvimge文件,而且自带图片都没有定位出车牌,这是要怎么弄呀 wowo-10 13:30:53
可以参考学习 opencv车牌识别源码运行ok abersone 14:52:0...opencv车牌识别(超详细注释) - 迷途中的前进- CSDN博客发表时间:日
/*\ 车牌识别总思路一:载入图像,初步处理,并二值化; //二值化二:寻找含有车牌有效信息的区域
迷途中的前进 其实,我们每一...基于opencv的车牌识别解析与代码- LinJM-机器视觉- CSDN博客发表时间:日
// LPRmain.cpp : 快速车牌识别系统的主文件 //本文件是系统的车牌定位和字符分割部分的代码,本系统引用的是OpenCV...chepaishibie 使用opencv写的一个车牌识别的程序,功能很强大Graph ...[opencv-License_Plate_Recognition.rar] - 数字图像处理源代码,用opencv语言实现车牌识别系统。 [OPENCV_SIFT_VC6.rar] - 基于OPENCV的SIFT特征提取与匹配算法。包含...OpenCV下车牌定位算法实现代码_小安他哥_新浪博客发表时间:日 -
车牌定位有很多种算法,从最简单的来,车牌在图像中一般被认为是长方形,由于图像摄取角度不同也可能是四边形。我们可以使用OpenCV中的实...MFC_OPENCV-chepai 车牌识别源代码,可以准确的定位并检测到...详细说明:opencv 车牌识别源代码,可以准确的定位并检测到车牌-opencv license plate recognition source code 文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投...vc6.0基于opencv1.0的车牌识别程序源代码-CSDN下载摘要:VC/C++源码,报表打印,车牌识别基于vc6.0和opencv1.0的车牌识别,本程序开发环境:vc6.0 opencv1.0。整体功能:是为了实现车牌自动跟踪,检测,并拍照,定位,识别,但是跟踪...
发表我的评论
版权所有:&&辽B2-
增值电信业务经营许可证:辽B2-这几天继续在看Lowe大神的SIFT神作,看的眼花手脚抽筋。也是醉了!!!!实在看不下去,来点干货。我们知道opencv下自带SIFT特征检测以及MATCH匹配的库,这些库完全可以让我们进行傻瓜似的操作。但实际用起来的时候还不是那么简单。下文将对一个典型的基于OPENCV的SIFT特征点提取以及匹配的例程进行分析,并由此分析详细的对OPENCV中SIFT算法的使用进行一个介绍。
OPENCV下SIFT特征点提取与匹配的大致流程如下:
读取图片-》特征点检测(位置,角度,层)-》特征点描述的提取(16*8维的特征向量)-》匹配-》显示
其中,特征点提取主要有两个步骤,见上行黄子部分。下面做具体分析。
1、使用opencv内置的库读取两幅图片
2、生成一个SiftFeatureDetector的对象,这个对象顾名思义就是SIFT特征的探测器,用它来探测衣服图片中SIFT点的特征,存到一个KeyPoint类型的vector中。这里有必要说keypoint的数据结构,涉及内容较多,具体分析查看,里面讲的自认为讲的还算详细(表打我&&)。简而言之最重要的一点在于:
keypoint只是保存了opencv的sift库检测到的特征点的一些基本信息,但sift所提取出来的特征向量其实不是在这个里面,特征向量通过SiftDescriptorExtractor 提取,结果放在一个Mat的数据结构中。这个数据结构才真正保存了该特征点所对应的特征向量。具体见后文对SiftDescriptorExtractor 所生成的对象的详解。
就因为这点没有理解明白耽误了一上午的时间。哭死!
3、对图像所有KEYPOINT提取其特征向量:
得到keypoint只是达到了关键点的位置,方向等信息,并无该特征点的特征向量,要想提取得到特征向量就还要进行SiftDescriptorExtractor 的工作,建立了SiftDescriptorExtractor 对象后,通过该对象,对之前SIFT产生的特征点进行遍历,找到该特征点所对应的128维特征向量。具体方法参见。通过这一步后,所有keypoint关键点的特征向量被保存到了一个MAT的数据结构中,作为特征。
&4、对两幅图的特征向量进行匹配,得到匹配值。
两幅图片的特征向量被提取出来后,我们就可以使用BruteForceMatcher对象对两幅图片的descriptor进行匹配,得到匹配的结果到matches中,这其中具体的匹配方法暂没细看,过段时间补上。
至此,SIFT从特征点的探测到最后的匹配都已经完成,虽然匹配部分不甚了解,只扫对于如何使用OPENCV进行sift特征的提取有了一定的理解。接下来可以开始进行下一步的工作了。
附:使用OPENCV下SIFT库做图像匹配的例程
// opencv_empty_proj.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include &opencv2/opencv.hpp&
#include &opencv2/features2d/features2d.hpp&
#include&opencv2/nonfree/nonfree.hpp&
#include&opencv2/legacy/legacy.hpp&
#include&vector&
int _tmain(int argc, _TCHAR* argv[])
const char* imagename = "img.jpg";
//从文件中读入图像
Mat img = imread(imagename);
Mat img2=imread("img2.jpg");
//如果读入图像失败
if(img.empty())
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
if(img2.empty())
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
//显示图像
imshow("image before", img);
imshow("image2 before",img2);
//sift特征检测
SiftFeatureD
vector&KeyPoint&kp1,kp2;
siftdtc.detect(img,kp1);
Mat outimg1;
drawKeypoints(img,kp1,outimg1);
imshow("image1 keypoints",outimg1);
vector&KeyPoint&::
for(itvc=kp1.begin();itvc!=kp1.end();itvc++)
cout&&"angle:"&&itvc-&angle&&"\t"&&itvc-&class_id&&"\t"&&itvc-&octave&&"\t"&&itvc-&pt&&"\t"&&itvc-&response&&
siftdtc.detect(img2,kp2);
Mat outimg2;
drawKeypoints(img2,kp2,outimg2);
imshow("image2 keypoints",outimg2);
SiftDescriptorE
Mat descriptor1,descriptor2;
BruteForceMatcher&L2&float&&
vector&DMatch&
pute(img,kp1,descriptor1);
pute(img2,kp2,descriptor2);
imshow("desc",descriptor1);
cout&&endl&&descriptor1&&
matcher.match(descriptor1,descriptor2,matches);
drawMatches(img,kp1,img2,kp2,matches,img_matches);
imshow("matches",img_matches);
//此函数等待按键,按键盘任意键就返回
waitKey();
阅读(...) 评论()}

我要回帖

更多关于 查看opencv源代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信