Der schnellste Weg, um regelmäßig Kamerabilder mit Pythons OpenCV zu erhalten

Hintergrund

Wir werden vorstellen, wie Sie mit opencv auf einfache Weise ein Kamerabild aufnehmen und es regelmäßig ausführen können. Die Kameras hier sind auf Kameras beschränkt, die von opencv gesteuert werden können, z. B. USB-Kameras und eingebaute Kameras. Einstellungen usw. basieren auf der Annahme, dass Sie Python mit der Anaconda3-Serie verwenden. Es funktioniert auf jedem Betriebssystem wie Windows, Mac und Linux.

Wenn Sie eine automatische Steuerung mit einer High-End-Kamera wie einer Spiegelreflexkamera durchführen möchten, scheint Gphoto ein Muss zu sein. Die kompatiblen Modelle von gphoto sind http://www.gphoto.org/proj/libgphoto2/support.php, und einige werden unterstützt. Steuern einer Spiegelreflexkamera mit einem Objektiv von einem Raspelkuchen ist hilfreich.

Umgebungseinstellung

opencv installieren

Da anaconda standardmäßig nicht opencv enthält,

python


conda install -c conda-forge opencv

Ausführen und eingeben.

schedule

Dies ist in Anaconda nicht enthalten, daher können Sie pip verwenden.

python


pip install schedule

Der Grund, warum Anakonda nicht enthalten ist, hängt von den Details der Entwicklung ab, sodass keine gründliche Verfolgung erforderlich ist.

So erhalten Sie ein Kamerabild nur einmal

Code

oneshot.py


#!/usr/bin/env python

import cv2

deviceid=0 # it depends on the order of USB connection. 
capture = cv2.VideoCapture(deviceid)

ret, frame = capture.read()
cv2.imwrite('test.jpg', frame)

--Capture = cv2. Holen Sie sich die Geräte-ID mit VideoCapture (Geräte-ID). Beachten Sie jedoch, dass sich die Geräte-ID bei einer USB-Kamera in Abhängigkeit von der Reihenfolge des Zeigens ändert. Normalerweise sollte Nr. 0 eingebaut sein und die USB-Kamera sollte Nr. 1 sein. --ret, frame = capture.read () In diesem Moment werden die Bilddaten im Frame gespeichert. --Verwenden Sie cv2.imwrite ('test.jpg', frame), um das erfasste Bild in jpg zu speichern. Das Sicherungsdateiformat wird durch die Erweiterung bestimmt.

Informationen zum Speichern von Bildern mit OpenCV finden Sie unter Lesen und Speichern von Bilddateien mit Python, OpenCV. Video der in Mac integrierten Kamera mit Python aufnehmen kann als Referenz für die Ermittlung von Fehlern und den Wechsel zur Graustufe verwendet werden.

Ausführungsmethode

In dem Verzeichnis, in dem sich oneshot.py befindet, in einer Umgebung, in der Python einen PATH hat

python


python oneshot.py

Oder

python


chmod +x oneshot.py
./oneshot.py

ist. Wenn es sich um Linux oder Mac handelt, verwenden Sie das Terminal. Windows kann eine Eingabeaufforderung sein, es ist jedoch möglicherweise einfacher, es über eine IDE-ähnliche App auszuführen.

So erhalten Sie Kamerabilder nach Zeitplan

Code

scheduled_shot.py


#!/usr/bin/env python

import cv2
import datetime
import schedule
import time

deviceid=0 # it depends on the order of USB connection. 
capture = cv2.VideoCapture(deviceid)

def job():
	ret, frame = capture.read()
	strdate=datetime.datetime.now().strftime('%Y%m%dT%H%M%S') 
	fname="image_" + strdate + ".jpg "
	cv2.imwrite(fname, frame) 
	print(fname + " is created.")

#do job every 10 seconds
schedule.every(1/6).minutes.do(job)

while True:
  schedule.run_pending()
  time.sleep(1)

Dieses Mal wird das Bild alle 10 Sekunden aufgenommen. Informationen zur Verwendung des Zeitplans finden Sie unter Lassen Sie uns Module regelmäßig mithilfe des Zeitplans ausführen.

Das Schreiben von True ist in Software möglicherweise nicht üblich, aber für die Hardwaresteuerung ein Muss. Mit dieser Funktion können Sie eine Funktion implementieren, die eine Endlosschleife erstellt, z. B. bei einem Reiskocher. Wenn Sie auf das Netzkabel zeigen, funktioniert diese weiterhin. Hier können Sie mit True alle 10 Sekunden unbegrenzt alle 10 Sekunden Bilder aufnehmen. Um der Endlosschleife zu entkommen, müssen Sie das Programm mit cntl + c usw. zwangsweise beenden (Auf diese Weise können Sie auch einen Timer einstellen, der nach einer bestimmten Zeit beendet wird).

Generieren Sie den Dateinamen mit datetime, damit der Dateiname nicht neu geschrieben wird und die Dateinamen in chronologischer Reihenfolge angeordnet werden. Weitere Informationen finden Sie unter Datum, Uhrzeit und Zeichenfolge mit Python datetime konvertieren.

Überprüfen Sie bei kontinuierlicher Erfassung nach dem Erfassen des Bildes die Dateigröße und überlegen Sie, wie viel Speicherplatz Sie benötigen. Wenn Sie bemerken, ist die verbleibende Kapazität der Festplatte häufig Null.

Ausführungsmethode

python


python scheduled_shot.py
...
image_20201001T110144.jpg is created.
image_20201001T110154.jpg is created.
image_20201001T110204.jpg is created.

Von nun an wird das Bild bei der Ausführung alle 10 Sekunden gespeichert. Da es nur eine erzwungene Beendigung gibt, wird sie durch gewaltsames Beenden des Programms mit cntl + c oder dergleichen beendet.

Andere

Bilder anzeigen

Wenn Sie versuchen, das Bild mit einer Imshow von Python usw. anzuzeigen, ist die Ausgabe der letzten Bilder aufgrund der großen Kapazität erheblich langsam. Speichern Sie das Bild in PNG oder JPEG, bevor Sie es anzeigen.

Zu einem höheren Automatisierungsgrad

Wenn dies nicht ausreicht, [erstellen wir eine GUI mit PyQt5! Sie können ganz einfach eine GUI wie Erklärung von der Einführung zur Verwendung erstellen. Unter dem Gesichtspunkt der Stabilität ist es jedoch besser, die ordnungsgemäße Verwendung mit CUI zu gewährleisten.

In einem solchen Programm ist es auch besser, das Datenerfassungsprogramm darauf zu konzentrieren. Die CPU und die Programme, die Bilder von der Kamera erfassen und speichern, sollten sich darauf konzentrieren, die Daten nicht zu verlieren. Sekundäre Operationen wie das Herunterladen, Übertragen und Verarbeiten von Daten in der letzten Stufe werden von einem anderen Programm ausgeführt.

Recommended Posts

Der schnellste Weg, um regelmäßig Kamerabilder mit Pythons OpenCV zu erhalten
Der einfachste Weg, OpenCV mit Python zu verwenden
Der schnellste Weg für Anfänger, um Python zu beherrschen
Der einfachste Weg, um mit Django zu beginnen
Der einfachste Weg, um Stimme mit Python zu synthetisieren
Excel X Python Die schnellste Arbeitstechnik
Einführung in Python mit Atom (unterwegs)
Kameraerfassung mit Python + OpenCV
Mindestkenntnisse, um mit dem Python-Protokollierungsmodul zu beginnen
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
Speichern Sie Bilder im Web mit Python (Colab) auf einem Laufwerk.
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
Link, um mit Python zu beginnen
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
So erhalten Sie die Python-Version
Gesichtserkennung mit Kamera mit opencv3 + python2.7
Laden Sie das GIF-Bild mit Python + OpenCV
Der schnellste Weg, EfficientNet auszuprobieren
Einfache Möglichkeit, nach dem Dezimalpunkt in Python3 abzurunden
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten
Versuchen Sie, die Kamera mit Pythons OpenCV zu verwenden
[Python] Ruft den Variablennamen mit str ab
Bilder mit Pupil, Python und OpenCV aufnehmen
Einzelpixel-Kamera zum Erleben mit Python
[python, openCV] base64 Gesichtserkennung in Bildern
[Python] Bilder mit OpenCV lesen (für Anfänger)
Fügen Sie Bildern mit Python2.7 Gaußsches Rauschen hinzu
Laden Sie Bilder mit Python auf Google Drive hoch
Der Weg zum Kompilieren zu Python 3 mit Thrift
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Erhalten und schätzen Sie die Form des Kopfes mit Dlib und OpenCV mit Python
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Konvertieren Sie PDFs mit Python in Massenbilder
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Begrüßen Sie die Welt mit Python mit IntelliJ
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
So erhalten Sie die Dateien im Ordner [Python]
[Python] Umgang mit japanischen Zeichen mit openCV
Zubu Amateur will Python starten
Python-Skript zum Abrufen von Notizinformationen mit REAPER
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
So starten Sie das Python-Projekt im Jahr 2020 (Windows WSL und Mac Common)
[Python] So speichern Sie Bilder mit Beautiful Soup sofort im Web
Hinweis: So erhalten Sie den letzten Tag des Monats mit Python (hinzugefügt am ersten Tag des Monats)
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Versuchen Sie, die Position eines Objekts auf dem Schreibtisch (reales Koordinatensystem) anhand des Kamerabilds mit Python + OpenCV zu messen
Einfache Möglichkeit, die Quelle der Python-Module zu überprüfen
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen