2016-05-13 6 views
2

Ich arbeite an einem Algorithmus, der ein Objekt aus einem Bild in einer Videodatei erkennen sollte. Fürs Erste möchte ich ORB verwenden (ich weiß, dass SURF und SIFT bei dieser Art von Arbeit besser sind, aber ich möchte diese Bestätigung basierend auf meinen Ergebnissen machen). Jetzt habe ich ein Problem: Wenn ich mein Programm starte, werden die Schlüsselpunkte in einem der Bilder in einem anderen Bereich als im anderen Bild erkannt und finden kaum Übereinstimmungen. Jetzt gab es in OpenCV 2.4 GridAdaptedFeatureDetector, eine Klasse, mit der Sie das Quellbild in ein Raster partitionieren und Punkte in jeder Zelle erkennen können. Aber ich benutze OpenCV 3.1 (Visual Studio 2015) und es scheint verschwunden zu sein? Bitte helfen Sie mir, eine Lösung zu finden.GridAdaptedFeatureDetector ist von OpenCV 3.1 verschwunden?

Antwort

1

Sie haben eine Menge verschiedener Adapter Feature Detektor/Extractor in OpenCV 3.1 entfernt.
Eine Möglichkeit, sie zurückzubekommen, besteht darin, sie von OpenCV 2.4 in Ihr Projekt zu kopieren. Es hat mit OpponentSiftDescriptor funktioniert. Sie müssen Schnittstellen reparieren, da sie von DescriptorExtractor- und FeatureDetector-Schnittstellen zu Features2D verschoben wurden. Sie können seinen Code von hier kopieren: https://github.com/kipr/opencv/blob/master/modules/features2d/src/detectors.cpp

0

Es ist in Python, so könnte es nützlich sein (Ich fand diese Frage bei der Suche nach einer Python-Lösung so hoffentlich jemand anderes tut auch ...), aber das ist, was ich früher iterieren Unterblöcke des Bildes:

def blocks(img, rows, cols): 
    h, w = img.shape[:2] 
    xs = np.uint32(np.rint(np.linspace(0, w, num=cols+1))) 
    ys = np.uint32(np.rint(np.linspace(0, h, num=rows+1))) 
    ystarts, yends = ys[:-1], ys[1:] 
    xstarts, xends = xs[:-1], xs[1:] 
    for y1, y2 in zip(ystarts, yends): 
     for x1, x2 in zip(xstarts, xends): 
      yield img[y1:y2, x1:x2] 
0

Es ist ein kürzliches paper, die das Problem der homogenen keypoint Verteilung auf dem Bild befasst ist. C++ -, Python- und Matlab-Schnittstellen werden in dieser repository bereitgestellt.