特徵的匹配大致可以分為3個步驟:
特徵的提取
計算特徵向量
特徵匹配
對於3個步驟,在opencv2中都進行了封裝。所有的特徵提取方法都實現featuredetector介面,descriptorextractor介面則封裝了對特徵向量(特徵描述符)的提取,而所有特徵向量的匹配都繼承了descriptormatcher介面。
簡單的特徵匹配
int main()
例項化了乙個特徵提取器surffeaturedetector,其構造函式引數(minhessian)用來平衡提取到的特徵點的數量和特徵提取的穩定性的,對於不同的特徵提取器改引數具有不同的含義和取值範圍。
對得到的特徵點提取特徵向量(特徵描述符)
匹配,上面**使用了暴力匹配的方法,最後的匹配結果儲存在vector中。
dmatch用來儲存匹配後的結果
struct dmatch
dmatch(int _queryidx, int _trainidx, float _distance) :
queryidx(_queryidx), trainidx(_trainidx), imgidx(-1), distance(_distance) {}
dmatch(int _queryidx, int _trainidx, int _imgidx, float _distance) : queryidx(_queryidx), trainidx(_trainidx), imgidx(_imgidx), distance(_distance) {}
int queryidx; //此匹配對應的查詢影象的特徵描述子索引
int trainidx; //此匹配對應的訓練(模板)影象的特徵描述子索引
int imgidx; //訓練影象的索引(若有多個)
float distance; //兩個特徵向量之間的歐氏距離,越小表明匹配度越高。
bool operator < (const dmatch &m) const;
};
然後使用drawmatches方法可以匹配後的結構儲存為mat
OpenCV2簡單的特徵匹配
特徵的匹配大致可以分為3個步驟 特徵的提取 計算特徵向量 特徵匹配 對於3個步驟,在opencv2中都進行了封裝。所有的特徵提取方法都實現featuredetector介面,descriptorextractor介面則封裝了對特徵向量 特徵描述符 的提取,而所有特徵向量的匹配都繼承了descript...
OpenCV2簡單的特徵匹配
特徵的匹配大致可以分為3個步驟 特徵的提取 計算特徵向量 特徵匹配 對於3個步驟,在opencv2中都進行了封裝。所有的特徵提取方法都實現featuredetector介面,descriptorextractor介面則封裝了對特徵向量 特徵描述符 的提取,而所有特徵向量的匹配都繼承了descript...
Opencv之特徵匹配
import cv2 import numpy as np import matplotlib.pyplot as plt matplotlib inline def cv show name,img cv2.imshow name,img cv2.waitkey 0 cv2.destroyallw...