Chroma Key mit OpenCV
Unser Ziel besteht darin, den grünen Hintergrund zu ersetzen Video_01 pelo fundo presente nr Video_02.
Der vollständige Code für das Projekt steht zur Verfügung Hier.
Hier ist eine Erklärung zum Code:
- Wichtige Informationen zu den benötigten Bibliotheken:
cv2
: OpenCV-Bibliothek zur Bildverarbeitung.numpy
(abgekürzt wienp
): Biblioteca para manipulação de arrays e cálculos numéricos.
2. Obtain dieser Movies:
cap_webcam
: Sehen Sie sich ein Webcam-Video oder ein Videoarchiv an, abhängig von der Ziellinie.cap_fundo
: Es handelt sich um ein Videoarchiv, das als Fundus verwendet wird.
3. Eintreten in ein Schleifenprinzip:
- Es gibt ein Quadro (Body) für jedes Video, das als Funktion verwendet wird
cap_webcam.learn()
ecap_fundo.learn()
. - Überprüfen Sie, ob die Movies abgeschlossen sind. Wenn Sie zwei Movies zusammenstellen, wird die Schleife angezeigt.
4. Definieren Sie die Farbgrenzen für das RGB-Format:
lower_green
eupper_green
Definieren Sie die Mindest- und Höchstwerte für ein Unternehmen. Unsere wertvollen Fornecidos sind ein Beispiel, das annähernd so viele Grenzen für die Korporation darstellt.
5. Suchen Sie eine Maske zur Identifizierung von Pixeln auf dem grünen Rasen:
masks = cv2.inRange(frame_webcam, lower_green, upper_green)
Es handelt sich um eine Binärmaske, bei der die Pixel auf dem grünen Gehäuse 255 (weiß) und die Pixel auf dem Gehäuse 0 (vorher) betragen.
6. Zusätzliche Pixel, die für die Verwendung mit der Wimperntusche erforderlich sind:
fundo_background = cv2.bitwise_and(frame_fundo, frame_fundo, masks=masks)
Anwendung auf die Maske, um die Pixel des Quadro-Hintergrunds zu extrahieren, die dem Grün des Quadro-Webcams entsprechen.
Dies ist das Ergebnis unserer ersten Wimperntusche:
7. Drehen Sie eine Maske um, um Pixel zu erhalten, die noch nicht auf dem grünen Hintergrund sind:
mask_inv = np.invert(masks)
Invertieren Sie die Maske für die Pixel, die nicht mit der Farbe Grün mit der Größe 255 (weiß) und mit der Farbe Grün mit der Farbe 0 (vorher) dargestellt wurden.
8. Zusätzliche Pixel der Webcam, die nicht grün sind:
webcam_foreground = cv2.bitwise_and(frame_webcam, frame_webcam, masks=mask_inv)
Wenden Sie eine umgekehrte Maske an, um die Pixel der Webcam zu extrahieren, die nicht grün sind.
9. Kombiniert die zusätzlichen Pixel mit den Pixeln der Webcam:
end result = cv2.addWeighted(fundo_background, 1, webcam_foreground, 1, 0)
Kombinieren Sie zwei Pixel in Kombination mit einem zusätzlichen Vorgang und denken Sie darüber nach, ein endgültiges Bild zu erstellen, das den Inhalt der Webcam ersetzt.
10. Kommentar zum Ergebnis auf einer Janela:
cv2.imshow("Resultado", end result)
Das Ergebnis der Ersetzung des Fundus wurde auf einer Jane mit dem Titel „Ergebnis“ angezeigt.
11. Überprüfen Sie, ob der Textual content „q“ für die Eingabe des Programms gedrückt wurde:
if cv2.waitKey(1) & 0xFF == ord('q'):
Verifica se a tecla ‚q‘ foi pressionada. Wenn die SIM-Karte oder die Schleife aktiviert ist, ist das Programm abgeschlossen.
Wenn Sie das Programm ausführen, erhalten Sie als Ergebnis ein Video, das Sie mit dem Programm verbinden Inhalt von Video01 com o Fundo des Videos02.
Wenn Sie von mir Gebrauch machen und mir eine Bestätigung zukommen lassen, bestätigen Sie Folgendes:
👏 Palmas para a artigo (50 palmas) para ajudar este artigo a ser apresentado para mais pessoas.
🔔 Siga-me: LinkedIn
📧Email