FastFeatureDetector的座標獲取

理論上這應該不是個問題,因爲角點檢測能夠把每個點標出來,自然肯定是能獲取其中的座標。但是我用到fast角點檢測的時候,卻發現這是個問題。原因在於他存取的數據結構比較特別,是“keypoint”(指的是python,其他語言的沒有試過)。直接print它,並不會想當然的輸出座標,而是一些奇怪的東西:
[, , ]
就是這樣的東西,並不是座標。但是,這肯定是可以獲取到座標的,網上找了一點時間,終於發現其中的“套路”。其實,直接print,只能輸出這個矢量的一些基本信息,就比如只能輸出他的名字“keypoint”和地址或者大小信息。卻得不到他裏面具體的信息。
具體介紹看:http://www.cnblogs.com/cj695/p/4041399.html
下面給出代碼如何獲取座標:

# -*- coding: utf-8 -*

import numpy as np
import cv2
img = cv2.imread('qqb.png')

fast = cv2.FastFeatureDetector()
kp = fast.detect(img,None)
#print kp#不會print座標

#這個函數專門針對keypoint
img2 = cv2.drawKeypoints(img, kp, color=(255,0,0))

j=len(kp)#其實這個地方可以理解成數組
tracks=[]
#循環獲取座標值
for i in range(0,j):
    tracks.append([ kp[i].pt])#是不是有點相像數組,但是又不同

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