資源簡介
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
評論
共有 條評論