• 大小: 106KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-01-22
  • 语言: 其他
  • 标签: 代码类  

资源简介

opencv实现的SIFT算法源码,包含图像的SIFT特征提取算法,以及图像之间的基于SIFT特征的匹配算法

资源截图

代码片段和文件信息

//--------------------------------------【程序说明】-------------------------------------------
// 程序说明:《OpenCV3编程入门》OpenCV2版书本配套示例程序93
// 程序描述:SIFT配合暴力匹配进行关键点描述和提取
// 开发测试所用操作系统: Windows 7 64bit
// 开发测试所用IDE版本:Visual Studio 2010
// 开发测试所用OpenCV版本: 2.4.9
// 2014年06月 Created by @浅墨_毛星云
// 2014年11月 Revised by @浅墨_毛星云
//------------------------------------------------------------------------------------------------



//---------------------------------【头文件、命名空间包含部分】----------------------------
// 描述:包含程序所使用的头文件和命名空间
//------------------------------------------------------------------------------------------------
#include 
#include 
#include 
#include 
using namespace cv;
using namespace std;



//-----------------------------------【ShowHelpText( )函数】-----------------------------
//  描述:输出一些帮助信息
//----------------------------------------------------------------------------------------------
void ShowHelpText()
{
//输出欢迎信息和OpenCV版本
printf(“\n\n\t\t\t非常感谢购买《OpenCV3编程入门》一书!\n“);
printf(“\n\n\t\t\t此为本书OpenCV2版的第93个配套示例程序\n“);
printf(“\n\n\t\t\t   当前使用的OpenCV版本为:“ CV_VERSION );
printf(“\n\n  ----------------------------------------------------------------------------\n\n\n“);
}


//--------------------------------------【main( )函数】-----------------------------------------
//          描述:控制台应用程序的入口函数,我们的程序从这里开始执行
//-----------------------------------------------------------------------------------------------
int main()
{
//【0】改变console字体颜色
system(“color 5F“); 

ShowHelpText();

//【1】载入图像、显示并转化为灰度图
Mat trainImage = imread(“1.jpg“) trainImage_gray;
imshow(“原始图“trainImage);
cvtColor(trainImage trainImage_gray CV_BGR2GRAY);

//【2】检测SIFT关键点、提取训练图像描述符
vector train_keyPoint;
Mat trainDescription;
SiftFeatureDetector featureDetector;
featureDetector.detect(trainImage_gray train_keyPoint);
SiftDescriptorExtractor featureExtractor;
featureExtractor.compute(trainImage_gray train_keyPoint trainDescription);

// 【3】进行基于描述符的暴力匹配
BFMatcher matcher;
vector train_desc_collection(1 trainDescription);
matcher.add(train_desc_collection);
matcher.train();

//【4】创建视频对象、定义帧率
VideoCapture cap(0);
unsigned int frameCount = 0;//帧数

//【5】不断循环,直到q键被按下
while(char(waitKey(1)) != ‘q‘)
{
//<1>参数设置
double time0 = static_cast(getTickCount( ));//记录起始时间
Mat captureImage captureImage_gray;
cap >> captureImage;//采集视频到testImage中
if(captureImage.empty())
continue;

//<2>转化图像到灰度
cvtColor(captureImage captureImage_gray CV_BGR2GRAY);

//<3>检测SURF关键点、提取测试图像描述符
vector test_keyPoint;
Mat testDescriptor;
featureDetector.detect(captureImage_gray test_keyPoint);
featureExtractor.compute(captureImage_gray test_keyPoint testDescriptor);

//<4>匹配训练和测试描述符
vector > matches;
matcher.knnMatch(testDescriptor matches 2);

// <5>根据劳氏算法(Lowe‘s algorithm),得到优秀的匹配点
vecto

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-06 22:22  【93】SIFT配合暴力匹配进行关键点描述和提取\
     目录           0  2018-11-06 22:20  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取\
     文件      393216  2018-11-06 22:22  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取.sdf
     文件        1012  2017-12-03 10:14  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取.sln
     文件       14336  2017-12-03 10:14  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取.suo
     文件       27136  2018-11-06 22:22  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取.v12.suo
     文件       75976  2017-12-03 10:14  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取\1.jpg
     文件        3849  2017-12-03 10:14  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取\93_SiftAndBFMatcher.cpp
     文件        3901  2017-12-03 10:14  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取.vcxproj
     文件         936  2017-12-03 10:14  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取.vcxproj.filters
     文件         141  2017-12-03 10:14  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取.vcxproj.user
     目录           0  2018-11-06 22:20  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取\Release\
     文件        1231  2018-11-06 22:20  【93】SIFT配合暴力匹配进行关键点描述和提取\93_SIFT配合暴力匹配进行关键点描述和提取\Release\93_SIFT配合暴力匹配进行关键点描述和提取.log

评论

共有 条评论