问题:使用OpenCV + Python在视频中训练SIFT或SURF以进行汽车检测

时间:2016-04-01 18:28:02

标签: python feature-extraction sift surf opencv3.1

我正在尝试使用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分类器将用于我在许多论文中阅读

我尝试使用此图片original image来提取其关键点keypoints,并在txt文件中提取的关键点位于此[GitHub] [3]链接中,其中包含我需要检测的代码和视频汽车。

任何想法如何将此车的关键点与视频中的汽车相匹配(' traffic.avi')。

我想使用Bag of Visual Words Method检测汽车,尝试这样做但不知道如何编码

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

0 个答案:

没有答案