OpenCV über Python: Gibt es eine schnelle Möglichkeit, Pixel außerhalb einer Reihe von Rechtecken zu zerlegen?

8

Ich habe ein Bild von einem Gesicht und ich habe Haarkaskaden benutzt, um die Lage (x, y, Breite, Höhe) des Mundes, der Nase und jedes Auges zu erkennen. Ich möchte alle Pixel außerhalb dieser Regionen auf Null setzen. Was wäre der schnellste (rechnerische) Weg, dies zu tun? Ich werde es irgendwann in Echtzeit mit Videobildern machen.

    
Mike Lawrence 15.07.2012, 13:14
quelle

1 Antwort

13

Ich weiß nicht, ob es der schnellste Weg ist, aber es ist ein Weg, es zu tun.

Erstellen Sie ein Maskenbild mit dem Bereich der Fläche als weiß und wenden Sie bitwise_and function mit dem Originalbild und dem Maskenbild an.

%Vor%

Es dauert 0.16 ms in meinem System (Core i5,4GB RAM) für ein Bild der Größe 400x300

BEARBEITEN - BESSERE METHODE : Sie müssen nicht wie oben beschrieben vorgehen. Erstellen Sie einfach ein Nullbild und kopieren Sie dann die ROI vom Originalbild in das Nullbild. das ist alles.

%Vor%

Es dauert nur 0.032 ms in meinem System für obige Parameter, 5 times faster als oben.

Ergebnisse:

Eingabebild:

Ausgabe:

    
Abid Rahman K 15.07.2012, 13:46
quelle

Tags und Links