资源简介
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
评论
共有 条评论