Mischen mit GPUImagePoissonBlendFilter

8

Ich versuche, GPUImagePoissonBlendFilter des GPUImage-Frameworks zu verwenden, um zwei Gesichter in meiner Faceplot-Anwendung zu mischen. Hier ist mein Code.

%Vor% Wie Sie sehen können, gebe ich zwei Bilder (rearFace und frontFace) als Eingaben für diese Methode. Die Bildvorderseite ist eine Form (Polygonform, die durch Verbinden der relativen Augen- und Mundpositionen gebildet wird) und hat die gleiche Größe wie das Rückseitenbild. (Um die Größe anzupassen, habe ich den Raum außerhalb der Polygonform gefüllt mit transparenter Farbe beim Zeichnen).

Das Mischen geschieht jedoch nicht wie erwartet. d. h. die scharfen Kanten der Vorderseite sind nicht richtig in die Rückseite integriert. Hier meine Annahme ist, dass der PoissonBlendFilter beginnt, das zweite Bild von seiner oberen linken Ecke anstatt der oberen linken Grenze des Gesichts zu mischen.

Problem: Ich habe das Gefühl, dass das Eingabebild nicht korrekt in den Filter eingegeben wird. Muss ich eine Maskierung auf das Eingabebild anwenden? Kann mir jemand dabei helfen?

    
Minna zacharias 29.07.2013, 11:01
quelle

1 Antwort

0

GPUImage kann manchmal mit Filtern mit zwei Eingängen heikel werden. Wenn Sie den Mischfilter zum ersten Quellbild hinzufügen, geben Sie den Texturort explizit an. Also statt:

[picture1 addTarget:poissonFilter];

Versuchen Sie Folgendes:

[picture1 addTarget:poissonFilter atTextureLocation:0];

Der Rest ( picture1 oder andere) benötigt das nicht, aber es gibt einen kleinen Fehler mit zwei Eingabefiltern, die manchmal eine explizite Angabe des Texturorts erfordern.

    
Can Poyrazoğlu 31.08.2013 08:35
quelle