0

我正在尝试使用 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 Method 检测汽车,尝试这样做但不知道如何进行编码

注意:我使用的是 OpenCV 3.1 和 Python 2.7.x

4

0 回答 0