2017-05-15 4 views
0

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?

Antwort

0

Sie haben vergessen zu geben Sie Ihre Fadenkreuz Breite

crosshairGenerator.crosshairWidth = 15.0

und es gibt keine Schwelle, die Sie erklärt

Verwandte Themen