[PYTHON] So verarbeiten Sie Kamerabilder mit Teams und Zoom

`Dieser Artikel wird auch hier vorgestellt. `` https://cloud.flect.co.jp/entry/2020/03/31/162537

Hallo zusammen.

Gegenwärtig arbeitet unser Unternehmen auf Ersuchen des Gouverneurs von Tokio grundsätzlich von zu Hause aus, um die Ausbreitung einer neuen Coronavirus-Infektion zu verhindern. Es gibt viele Leute, die ähnliche Maßnahmen ergreifen, und ich denke, es gibt verschiedene Schwierigkeiten, aber ich würde gerne zusammenarbeiten, um dieses schwierige Lied zu überwinden.

Übrigens, wenn Sie längere Zeit von zu Hause aus arbeiten, können Sie in der Regel gestresst sein, z. B. wenn Sie nicht in der Lage sind, gelegentliche Gespräche zu führen, die täglich geführt werden. In einer solchen Situation möchte ich eine Situation schaffen, in der man lachen und eine Pause machen kann, also möchte ich eine kleine Geschichte vorstellen.

Der Inhalt ist eine Methode zum Einbinden, Verarbeiten und Bereitstellen einer Webcam in Videokonferenzen wie Microsoft Teams und Zoom. Da ich ein Linux-Benutzer bin, werde ich es dieses Mal in Linux einführen. Ich denke, andere Plattformen werden irgendwo eingeführt.

Außerdem wähle ich die Zeit und den Fall, um "eine Situation zu schaffen, in der sogar jemand lachen und eine Pause machen kann", also bitte auf eigenes Risiko (^ _ ^) /.

test.gif

Annahme

Ich denke, es funktioniert gut auf den meisten Linux-Systemen, aber die Umgebung, mit der ich gearbeitet habe, ist Debian Buster.

$ cat /etc/debian_version
10.3

Wenn Python3 nicht enthalten ist, installieren Sie es bitte.

$ python3 --version
Python 3.7.3

Installation der zugehörigen Software

Virtuelles Webcam-Gerät

Dieses Mal werden wir ein virtuelles Webcam-Gerät namens v4l2loopback verwenden. https://github.com/umlaeute/v4l2loopback

Wir müssen das virtuelle Webcam-Gerät anhand der tatsächlichen Webcam identifizieren. Überprüfen Sie daher zuerst die Gerätedatei auf die tatsächliche Webcam. Im folgenden Beispiel scheinen video0 und video1 der eigentlichen Webcam zugeordnet zu sein.

$ ls /dev/video*
/dev/video0  /dev/video1

Lassen Sie uns nun den v4l2-Loopback einführen. Zuerst git klonen, machen und installieren.

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install

Laden Sie dann das Modul. Derzeit scheint es notwendig zu sein, exklusive_caps = 1 hinzuzufügen, um dies insbesondere bei Chrome zu erkennen. [https://github.com/umlaeute/v4l2loopback/issues/78]

sudo modprobe v4l2loopback exclusive_caps=1

Nachdem das Modul geladen ist, überprüfen wir die Gerätedatei. Im folgenden Beispiel wurde video2 hinzugefügt.

$ ls /dev/video*
/dev/video0  /dev/video1  /dev/video2

ffmpeg Der einfachste Weg, Daten an ein virtuelles Webcam-Gerät zu senden, ist die Verwendung von ffmpeg. Bitte installieren Sie es schnell mit apt-get etc.

Webkamera-Hook und Videoverteilung

Wenn diesmal ein Lächeln erkannt wird, werde ich versuchen, das Bild zu verarbeiten. Wenn ein Lächeln erkannt wird, wird im Video eine Lächelnmarke angezeigt.

Klonen Sie zunächst die Dateien im folgenden Repository, um das Modul zu installieren.

$ git clone https://github.com/dannadori/WebCamHooker.git
$ cd WebCamHooker/
$ pip3 install -r requirements.txt

Holen Sie sich die Kaskadendatei von hier. Einzelheiten zur Kaskadendatei finden Sie in der opencv-Formel. https://github.com/opencv/opencv/tree/master/data/haarcascades

$ wget https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml -P models/
$ wget https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_smile.xml -P models/

Lassen Sie uns das Lächeln von Mr. Toya ausleihen.

$ wget https://4.bp.blogspot.com/-QeM2lPMumuo/UNQrby-TEPI/AAAAAAAAI7E/cZIpq3TTyas/s160/mark_face_laugh.png -P images/

Es wäre schön, eine solche Ordnerstruktur zu haben.

$ ls -1
haarcascade_frontalface_default.xml
haarcascade_smile.xml
mark_face_laugh.png
webcamhooker.py

Die Ausführung ist wie folgt. Geben Sie die tatsächliche Webcam-Gerätenummer in --input_video_num ein. Geben Sie für / dev / video0 die nachfolgende 0 ein. Geben Sie für --output_video_dev die Gerätedatei des virtuellen Webcam-Geräts an. Verwenden Sie außerdem Strg + C, um den Vorgang zu beenden.

$ python3 webcamhooker.py --input_video_num 1 --output_video_dev /dev/video2

Wenn Sie den obigen Befehl ausführen, wird ffmpeg ausgeführt und das Video wird an das virtuelle Kameragerät gesendet.

Lass uns einen Video-Chat machen!

Wenn Sie einen Video-Chat durchführen, wird in der Liste der Videogeräte so etwas wie Dummy ~ ~ angezeigt. Wählen Sie ihn daher aus. Dies ist ein Beispiel für Teams. Stellen Sie sich links und rechts die Bildschirme jedes Teilnehmers vor. Der Benutzer auf der linken Seite verwendet dieses virtuelle Kameragerät. Die rechte Seite ist die Empfangsseite. Wenn Sie lächeln, sehen Sie ein Lächeln. Großer Erfolg (^ _ ^) /.

test.gif

Schließlich

Jetzt, da die Kommunikation von Angesicht zu Angesicht schwierig ist, hoffe ich, dass Sie sie mit Video-Chat noch mehr genießen können. Dieses Mal habe ich ein Beispiel für das Erkennen eines Lächelns und das Verarbeiten des Bildes gezeigt, aber ich denke, dass verschiedene Verarbeitungen je nach Gerät mit opencv und anderen Tools durchgeführt werden können. Bitte probieren Sie verschiedene Dinge aus!

Referenz

Ich habe hier auf die Erkennung von Lächeln mit opencv verwiesen. https://qiita.com/fujino-fpu/items/99ce52950f4554fbc17d

Informationen zum Einfügen von Bildern mit opencv finden Sie hier. https://qiita.com/a2kiti/items/9672fae8e90c2da6f352

Recommended Posts

So verarbeiten Sie Kamerabilder mit Teams und Zoom
So verarbeiten Sie Kamerabilder mit Teams und Zoom Volumen der Emotionsanalyse mit Tensorflow
So verarbeiten Sie Kamerabilder mit Teams und Zoom Verarbeitungsvolumen im Animationsstil
So debuggen Sie mit Jupyter oder iPython Notebook
So zeigen Sie Bilder kontinuierlich mit matplotlib Memo an
Wie aktualisiere ich mit SQLAlchemy?
Wie man mit Theano besetzt
Wie mit SQLAlchemy ändern?
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
Wie lösche ich mit SQLAlchemy?
So erstellen Sie mit Flask einen BOT für Cisco Webex-Teams
So laden Sie keine Bilder, wenn Sie PhantomJS mit Selen verwenden
So brechen Sie RT mit tweepy ab
So aktivieren Sie das Speichern von Keras Regressor mit pickle oder joblib
Python: So verwenden Sie Async mit
So sammeln Sie Bilder in Python
So verwenden Sie virtualenv mit PowerShell
So installieren Sie Python-Pip mit Ubuntu20.04LTS
Umgang mit unausgeglichenen Daten
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Wie fange ich mit Scrapy an?
Erste Schritte mit Python
Umgang mit dem DistributionNotFound-Fehler
Wie fange ich mit Django an?
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Node.js: So töten Sie Nachkommen eines Prozesses, der von child_process.fork () gestartet wurde
So berechnen Sie das Datum mit Python
So installieren Sie den MySQL-Connector mit pip3
So verbinden Sie INNER mit SQL Alchemy
So installieren Sie Anaconda mit pyenv
Der schnellste Weg, um regelmäßig Kamerabilder mit Pythons OpenCV zu erhalten
So suchen Sie mit Pythons Astroquery und erhalten passende Bilder mit Skyview
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
[Blender] So legen Sie shape_key mit dem Skript fest
Wie man mit matplotlib mehrere Figuren betitelt
So erhalten Sie die Eltern-ID mit sqlalchemy
Lernen Sie mit Chainer, monochrome Bilder einzufärben
So fügen Sie ein Paket mit PyCharm hinzu
So installieren Sie DLIB mit aktiviertem 2020 / CUDA
Verwendung von ManyToManyField mit Djangos Admin
Verwendung von OpenVPN mit Ubuntu 18.04.3 LTS
Verwendung von Cmder mit PyCharm (Windows)
So verhindern Sie Paketaktualisierungen mit apt
So arbeiten Sie mit BigQuery in Python
Wie man Ass / Alembic mit HtoA benutzt
Einzelpixel-Kamera zum Erleben mit Python
Umgang mit Enum-Kompatibilitätsfehlern
Verwendung von Japanisch mit NLTK-Plot
Wie man einen Taschentest mit Python macht
So suchen Sie in Google Colaboratory nach Google Drive
So zeigen Sie Python-Japanisch mit Lolipop an
So laden Sie YouTube-Videos mit youtube-dl herunter
Fügen Sie mit Pythonista Bilder zu iOS-Fotos hinzu
Verwendung des Jupyter-Notebooks mit ABCI
So schalten Sie Linux unter Ultra96-V2 aus