[OpenCV] opencv接口實現ORB特徵檢測

[OpenCV] opencv接口實現ORB特徵檢測

背景

windows10下安裝的opencv是opencv-3.4.5-vc14_vc15.exe;
關於windows10下vs配置opencv參考博客:
[opencv讀圖] Windows10下VS2019加載opencv,讀圖
https://blog.csdn.net/jn10010537/article/details/107125886

code sample

#include <opencv2/opencv.hpp>
#include <windows.h>
#include <iostream>
using namespace cv;

int main(){	
	//---------------------------------------------
	//需要引入的包含文件#include <windows.h>
	//LARGE_INTEGER的數據結構來表示64位數據
	//nFreq時鐘頻率,nBeginTime開始時間,nEndTime結束時間
	LARGE_INTEGER nFreq, nBeginTime, nEndTime;
	
	//QueryPerformanceFrequency()獲得機器內部定時器的時鐘頻率;
	QueryPerformanceFrequency(&nFreq);
	//---------------------------------------------
		
	Mat image = imread("timg3.jpg",0);//讀取灰度圖片

	//resize縮小圖片
	Mat resizeImg;
	resize(image,resizeImg, Size(), 0.5, 0.5, INTER_LINEAR);
	
	// vector of keyPoints,不需要再引入包含文件#include <vector>了;
	std::vector<KeyPoint> keyPoints;

	// construction of the orb feature detector object,初始化ORB檢測器
	Ptr<FeatureDetector> orb = ORB::create();

	//需要引入的包含文件#include <windows.h>
	//QueryPerformanceCounter()這個函數返回高精確度性能計數器的值(cpu運行的時鐘週期數)
	QueryPerformanceCounter(&nBeginTime);

	//feature point detection用ORB找到關鍵點
	orb->detect(resizeImg, keyPoints);	

	QueryPerformanceCounter(&nEndTime);

	//將週期/頻率得到時間
	double time = double(nEndTime.QuadPart - nBeginTime.QuadPart) / nFreq.QuadPart;
	
	std::cout << "運行時間: " << time * 1000 << "ms" << std::endl;

	//畫出關鍵點
	drawKeypoints(resizeImg, keyPoints, resizeImg, Scalar(0, 0, 255), DrawMatchesFlags::DRAW_OVER_OUTIMG);

	imshow("ORB_feature_img", resizeImg);
	waitKey(0);
	return 0;
}

運行結果如下:
在這裏插入圖片描述
備註:
如果在調試過程中遇到:被調用的對象已與其客戶斷開連接,請重啓VS,重新進入;
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章