Ich habe ein seltsames Problem bei der Implementierung der Corner Detection mit GPUImage.GPUImage2: HarrisCornerDetector ruft keinen Callback an
Ich versuche, die Filtervorlage von Brads Download als Ausgangspunkt zu verwenden, aber obwohl ich eine zusammengesetzte Ansicht des Bildes und der Eckpunkte (als einzelne weiße Pixel) erzeugen kann, wenn ich versuche, in die hinzuzufügen Fadenkreuz-Generator, die Callback-Funktion wird nie aufgerufen.
In meinem vereinfachtes Beispiel, ich habe eine Ausgabe Ansicht als RenderView
konfigurierte und Video Kamera definiert als Camera?
do {
videoCamera = try Camera(sessionPreset:AVCaptureSessionPreset640x480, location:.backFacing)
videoCamera!.runBenchmark = true
} catch {
videoCamera = nil
print("Couldn't initialize camera with error: \(error)")
}
let filter = HarrisCornerDetector()
let crosshairGenerator = CrosshairGenerator(size: Size(width: 480, height: 640))
filter.cornersDetectedCallback = { corners in
crosshairGenerator.renderCrosshairs(corners)
}
videoCamera! --> filter
let blendFilter = AlphaBlend()
videoCamera! --> blendFilter --> renderView
//crosshairGenerator --> blendFilter // INPUT 1: if I add this line, the callback never happens
filter --> blendFilter // INPUT 2: with this input to blendFilter, the callback is good
Wie gezeigt, wird die Callback-Funktion wie erwartet genannt, und ich sehe, kleine weißen Punkte in der Ausgabe.
Wenn ich Kommentare lösche, um INPUT 1 zu aktivieren und INPUT 2 auskommentiert, zeigt das Display nur die Kamera an, und der Corner Detection Callback wird nie aufgerufen.
Das Beispielprojekt, das Brad zur Verfügung stellt, funktioniert auf meinem Gerät, daher weiß ich, dass es kein Hardware- oder iOS-Problem gibt!
Irgendwelche Gedanken?