OpenCV (Open Source Computer Vision Library) ist eine Sammlung von BSD-lizenzierten Video- / Bildverarbeitungsbibliotheken. Es gibt viele Algorithmen wie Bildfilterung, Vorlagenabgleich, Objekterkennung, Videoanalyse und maschinelles Lernen.
Beispiel für Bewegungsverfolgung mit OpenCV (OpenCV Google Summer of Code 2015) https://www.youtube.com/watch?v=OUbUFn71S4s
Klicken Sie hier für die Installation und einfache Verwendung http://qiita.com/olympic2020/items/d5d475a446ec9c73261e
Klicken Sie hier, um Standbilder zu filtern Versuchen Sie die Kantenerkennung mit OpenCV
Klicken Sie hier, um Videodateien zu verarbeiten Versuchen Sie, Videos in Echtzeit mit OpenCV zu konvertieren
Dieses Mal werde ich versuchen, Videos zu verarbeiten, die in Echtzeit eingegeben wurden, z. B. Webkameras und Videokameras.
Die Glättung ist ein Filter, mit dem der Bereich von Zeichen und der Bereich von sich bewegenden Objekten, die verfolgt werden sollen, bestimmt werden. Beispielsweise wird im folgenden Ablauf eine Glättung durchgeführt, um die Fläche zu bestimmen.
OpenCV unterstützt die folgenden Glättungen:
Dieses Mal erstellen wir ein Programm, das die Gaußsche Glättung der Videoeingabe in Echtzeit durchführt, Fenster anzeigt und Dateien speichert.
sebcam.py
import cv2
# cv2.cv.CV_FOURCC
def cv_fourcc(c1, c2, c3, c4):
return (ord(c1) & 255) + ((ord(c2) & 255) << 8) + \
((ord(c3) & 255) << 16) + ((ord(c4) & 255) << 24)
if __name__ == '__main__':
#Konstante Definition
ESC_KEY = 27 #Esc-Taste
INTERVAL= 33 #Wartezeit
FRAME_RATE = 30 # fps
ORG_WINDOW_NAME = "org"
GAUSSIAN_WINDOW_NAME = "gaussian"
GAUSSIAN_FILE_NAME = "gaussian.avi"
DEVICE_ID = 0
#Kamerabilderfassung
cap = cv2.VideoCapture(DEVICE_ID)
#Vorbereiten der gespeicherten Videodatei
end_flag, c_frame = cap.read()
height, width, channels = c_frame.shape
rec = cv2.VideoWriter(GAUSSIAN_FILE_NAME, \
cv_fourcc('X', 'V', 'I', 'D'), \
FRAME_RATE, \
(width, height), \
True)
#Fenstervorbereitung
cv2.namedWindow(ORG_WINDOW_NAME)
cv2.namedWindow(GAUSSIAN_WINDOW_NAME)
#Konvertierungsverarbeitungsschleife
while end_flag == True:
#Gaußsche Glättung
g_frame = cv2.GaussianBlur(c_frame, (15, 15), 10)
#Rahmenanzeige
cv2.imshow(ORG_WINDOW_NAME, c_frame)
cv2.imshow(GAUSSIAN_WINDOW_NAME, g_frame)
#Rahmenschreiben
rec.write(g_frame)
#Beenden Sie mit der Esc-Taste
key = cv2.waitKey(INTERVAL)
if key == ESC_KEY:
break
#Lesen Sie den nächsten Frame
end_flag, c_frame = cap.read()
#Verarbeitung beenden
cv2.destroyAllWindows()
cap.release()
rec.release()
Die Funktionsweise des Skripts wurde in der folgenden Umgebung bestätigt.
Videodateien und Eingaben von der Kamera können im Programm ähnlich behandelt werden. Wenn Sie Eingaben von der Kamera verarbeiten, ist es in Ordnung, wenn Sie die Geräte-ID anstelle des Dateinamens angeben.
cv2.VideoCapture(DEVICE_ID)
Wenn Sie nur eine Kamera haben, geben Sie "DEVICE_ID = 0" an.
** Keine Filterung **
** Mit Gaußscher Glättung **
Klicken Sie hier, um das Video anzusehen.
--Keine Filterung Nehmen Sie einfach mit der am PC angeschlossenen Software auf (Link).
"Es ist ein alter Notebook-PC, und kann OpenCV der Leistung in Python standhalten?" Ich habe versucht, es mit halbem Vertrauen auszuführen, aber es hat ohne Probleme funktioniert (^^) v
Recommended Posts