車を検出するために、SIFT または SURF を使用して車のキーポイントをダンプし、これらのキーポイントをビデオと照合しようとしています。キーポイントは、Haar Cascades の代わりに使用する方が便利です。トレーニングには、たとえば 5000 などの多くの画像を使用する必要があり、多くの計算プロセスが必要になるからです。SURF または SIFT のキーポイントはスケール不変であり、すべての車でほぼ同じです。
キーポイントを txt ファイルにダンプするコードは次のとおりです。
import cv2
import numpy as np
import os
import cPickle
surf = cv2.xfeatures2d.SURF_create()
descriptors = []
image = cv2.imread('1.jpg')
kp, dsc = surf.detectAndCompute(image, None)
img = cv2.drawKeypoints(image, kp, image)
descriptors.append(dsc)
des = np.array(descriptors)
k = 5
bow = cv2.BOWKMeansTrainer(k)
cluster = bow.cluster(des)
add = bow.add(dsc)
f = open("descriptors.pkl", "w")
f.write(cPickle.dumps(des))
f.close()
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
その後、私が持っているビデオで生成したtxtファイルのこれらのキーポイントを一致させる方法がわかりません。ブルートフォースおよびKNNマッチャーとして多くの機能マッチングアルゴリズムがあり、SVM分類子としての分類子もあり、読みながら使用されます多くの論文で
この画像でキーポイントを抽出しようとしましたが、txt ファイルに抽出されたキーポイントは、この [GitHub][3] リンクにあり、車を検出するために必要なコードとビデオが含まれています。
この車のキーポイントをビデオ ('traffic.avi') の車と一致させる方法を教えてください。
Bag of Visual Words メソッドを使用して車を検出したい、そうしようとしたが、コーディングの方法がわからない
注: OpenCV 3.1 と Python 2.7.x を使用しています。