Setzen Sie OpenCV in OS X mit Homebrew ein und geben Sie Video mit Python ein / aus

Ich wollte OpenCV ein wenig verschieben, also habe ich versucht, es auf einem Mac zu installieren, also blieb ich stecken. Es ist also ein Artikel, bis ich die AVI-Datei anstelle eines Memorandums anzeige und speichere.

Was ist in diesem Artikel zu tun?

Was Sie in diesem Artikel nicht verstehen

Installation

Halten Sie Homebrew auf dem Laufenden.

Die Python-Umgebung scheint mit der OpenCV-Installation über Homebrew nicht kompatibel zu sein, wenn die Version von Pyenv gewechselt wird und die Kompilierung nicht bestanden wurde.

Ich habe pyenv aufgegeben und Python von Homebrew installiert. Das Standard-Homebrew wird nicht mit OpenCV geliefert, daher müssen Sie eine Bibliothek für die Informatik installieren.

Referenz 1: So installieren Sie OpenCV mit Homebrew

Nun, ich würde gerne mit der Installation beginnen, aber bevor ich OpenCV installiere, werde ich dies und das für den Umgang mit Videos installieren. Wenn Sie dies nicht tun, sind Standbilder in Ordnung, aber ich habe Probleme mit Fehlern beim Versuch, Videos zu verarbeiten.

Referenz 2: Erstellen einer OpenCV + Python-Umgebung mit virtualenvwrapper (2) Referenz 3: [Installieren von FFmpeg und Erstellen von WebM-Videos unter Mac OS X](http://kujirahand.com/blog/index.php?Mac+OS+X%E3%81%A7FFmpeg%E3%81%AE% E3% 82% A4% E3% 83% B3% E3% 82% B9% E3% 83% 88% E3% 83% BC% E3% 83% AB% E3% 81% A8WebM% E5% 8B% 95% E7% 94% BB% E3% 81% AE% E4% BD% 9C% E3% 82% 8A% E6% 96% B9)

Wenn Sie an der Stelle beginnen, an der Python nicht enthalten ist, sieht es wie folgt aus. Wenn numpy nicht enthalten ist, schlägt die OpenCV-Installation möglicherweise fehl, daher habe ich sie zuerst eingefügt.

Der Bereich um ffmpeg kann etwas übermäßig groß sein. Derzeit mag ich OpenCV nicht, wenn später ein Fehler auftritt, daher habe ich alle Optionen aufgelistet.

$ brew tap homebrew/science
$ brew install python
$ pip install numpy
$ brew install cmake automake celt faac fdk-aac git lame libass libtool libvorbis libvpx libvo-aacenc opencore-amr openjpeg opus sdl schroedinger shtool speex texi2html theora wget x264 xvid yasm
$ brew install ffmpeg --with-fdk-aac --with-libvo-aacenc --with-libvorbis --with-libvpx --with-openjpeg --with-theora --with-opencore-amr
$ brew install eigen
$ brew install jasper
$ brew install tbb
$ brew install qt
$ brew install opencv --with-eigen --with-jasper --with-libtiff --with-qt --with-tbb --with-ffmpeg

Das Kompilieren von OpenCV dauert lange (ca. 10 Minuten in der MacBook Air-Umgebung), aber warten Sie geduldig.

Video anzeigen (AVI-Datei)

Detaillierte Erklärung Im OpenCV-Beispiel gibt es ein Beispiel für das Lesen und Anzeigen einer AVI-Datei mit einem Schieberegler (Spurleiste) auf dem Bildschirm. Implementieren Sie dies in Python.

example2-3.py


# coding: UTF-8
import numpy as np
import cv2

#Implementierungsreferenz http://www.beechtreetech.com/opencv-exercises-in-python
#Geändert, um cv2 zu verwenden

updatelock = False #Sperren Sie das Flag während der Verarbeitung der Spurleiste
windowname = 'frame' #Fenstername
trackbarname = 'Position' #Name der Spurleiste

#AVI-Datei lesen
#avi holt eine Probe geeigneter Länge aus dem Internet
#Referenz:http://www.engr.colostate.edu/me/facil/dynamics/avis.htm
cap = cv2.VideoCapture('drop.avi')

#Definition der Rückruffunktion, die aufgerufen wird, wenn die Spurleiste verschoben wird
def onTrackbarSlide(pos):
	updatelock = True
	cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, pos)
	updatelock = False

#Definieren Sie ein benanntes Fenster
cv2.namedWindow(windowname, cv2.WINDOW_NORMAL)

#Ermitteln Sie die Anzahl der Frames in einer AVI-Datei
frames = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))

#Wenn die Anzahl der Frames 1 oder mehr beträgt, legen Sie sie in der Spurleiste fest
if (frames > 0):
	cv2.createTrackbar(trackbarname, windowname, 0, frames, onTrackbarSlide)

#Wiederholen Sie diesen Vorgang beim Öffnen der AVI-Datei (Ende nach dem Lesen bis zum letzten Frame).
while(cap.isOpened()):

	#Zeichnen Sie nicht, während Sie die Spurleiste aktualisieren
	if (updatelock):
		continue

	#1 Bild lesen
	ret, frame = cap.read()

	#Wenn Sie es nicht lesen können, beenden Sie es
	if ret == False:
		break

	#Anzeige auf dem Bildschirm
	cv2.imshow(windowname,frame)

	#Holen Sie sich die aktuelle Frame-Nummer
	curpos = int(cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES))

	#In der Spurleiste einstellen (Rückruffunktion wird aufgerufen)
	cv2.setTrackbarPos(trackbarname, windowname, curpos)

	#Drücken Sie q, um den Vorgang zu beenden
	if cv2.waitKey(1) & 0xFF == ord('q'):
		break

#Geben Sie die AVI-Datei frei
cap.release()

#Fenster schließen
cv2.destroyAllWindows()

Wenn die OpenCV-Installation erfolgreich ist, wird das Fenster geöffnet und das Video wird zur Laufzeit fehlerfrei angezeigt. Es endet automatisch, wenn Sie das Ende erreichen. Wenn Sie die Titelleiste bedienen, wird die Fortsetzung von dieser Szene abgespielt.

example2-3.png

Speichern Sie das Kamerabild als Video (AVI-Datei)

Das folgende Beispiel verwendet die integrierte Kamera des Mac, um das Kamerabild so zu speichern, wie es ist.

example_cam.py


# coding: UTF-8
import numpy as np
import cv2

#Geben Sie die Aufnahme von der Kamera an
cap = cv2.VideoCapture(0)

#Code Code Spezifikation
fourcc = cv2.cv.CV_FOURCC('m', 'p', '4', 'v') 

#Geben Sie die Sicherungsdatei, die Bildrate und die Größe an
out = cv2.VideoWriter('output.m4v',fourcc, 30, (640,480))

#Verarbeiten Sie die ganze Zeit, während die Kamera geöffnet ist
while(cap.isOpened()):

    #Extrahieren Sie das aufgenommene Bild
    ret, frame = cap.read()

    #Beenden Sie, wenn keine Daten vorhanden sind
    if ret==False:
        break

    #Bild in Datei schreiben
    out.write(frame)

    #Bild auf dem Bildschirm ausgeben
    cv2.imshow('frame',frame)

    # "q"Beenden, wenn gedrückt wird
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

#Aufräumen
cap.release()
out.release()
cv2.destroyAllWindows()

Das Bild von der Kamera wird auf dem Bildschirm ausgegeben. Gleichzeitig wird auch in die Datei geschrieben. Die Ausgabedatei kann direkt vom Mac im m4v-Format gelesen werden. Lassen Sie uns also sehen, ob sie abgespielt werden kann.

Videos filtern

Lassen Sie uns am Ende wie bei OpenCV das geladene Video filtern. Die ursprüngliche AVI-Datei wird eingegeben, und das Bild nach der Verarbeitung enthält Informationen, die beide auf dem Bildschirm angezeigt werden.

example2-6.py


# coding: UTF-8
import numpy as np
import cv2
import cv2.cv as cv

updatelock = False #Sperren Sie das Flag während der Verarbeitung der Spurleiste
windowname_in = 'inframe' # Window(Das Originalbild)s Name
windowname_out = 'outframe' # Window(Konvertiertes Bild)s Name
trackbarname = 'Position' #Name der Spurleiste

#AVI-Datei lesen
cap = cv2.VideoCapture('drop.avi')

#Definition der Rückruffunktion, die aufgerufen wird, wenn die Spurleiste verschoben wird
def onTrackbarSlide(pos):
	updatelock = True
	cap.set(cv.CV_CAP_PROP_POS_FRAMES, pos)
	updatelock = False

#Canny Kantenerkennung
def doCanny(img):
	#Farbbild in graues Bild konvertieren
	gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
	return cv2.Canny(gray, 100, 200)
 
 
#Definieren Sie ein benanntes Fenster
cv2.namedWindow(windowname_in, cv2.WINDOW_NORMAL)
cv2.namedWindow(windowname_out, cv2.CV_WINDOW_AUTOSIZE)

#Ermitteln Sie die Anzahl der Frames in einer AVI-Datei
frames = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))

#Wenn die Anzahl der Frames 1 oder mehr beträgt, legen Sie sie in der Spurleiste fest
if (frames > 0):
	cv2.createTrackbar(trackbarname, windowname_in, 0, frames, onTrackbarSlide)

#Wiederholen Sie diesen Vorgang, während Sie die AVI-Datei öffnen
while(cap.isOpened()):

	#Zeichnen Sie nicht, während Sie die Spurleiste aktualisieren
	if (updatelock):
		continue

	#1 Bild lesen
	ret, frame = cap.read()

	#Wenn Sie es nicht lesen können, beenden Sie es
	if ret == False:
		break

	#Anzeige auf dem Bildschirm
	cv2.imshow(windowname_in,frame)
	cv2.imshow(windowname_out,doCanny(frame))

	#Holen Sie sich die aktuelle Frame-Nummer
	curpos = int(cap.get(cv.CV_CAP_PROP_POS_FRAMES))

	#In der Spurleiste einstellen (Rückruffunktion wird aufgerufen)
	cv2.setTrackbarPos(trackbarname, windowname_in, curpos)

	#Drücken Sie q, um den Vorgang zu beenden
	if cv2.waitKey(1) & 0xFF == ord('q'):
		break

#Geben Sie die AVI-Datei frei
cap.release()

#Fenster schließen
cv2.destroyAllWindows()

Erkennt den Rand des Videos und zeigt es im Outframe-Fenster an.

example2-6.png

Zusammenfassung

Recommended Posts

Setzen Sie OpenCV in OS X mit Homebrew ein und geben Sie Video mit Python ein / aus
Python-Eingabe und Ausgabe
Starten Sie die numerische Berechnung mit Python (mit Homebrew und Pip).
Word Count mit Apache Spark und Python (Mac OS X)
Testen Sie Python mit Miniconda unter OS X und Linux mit travis-ci
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
Setzen Sie Python, Numpy, OpenCV3 in Ubuntu14
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Exportieren und Ausgeben von Dateien in Python
Verwenden Sie OpenCV mit Python 3 in Window
Installieren Sie OpenCV2.4 (+ Python) schnell unter OS X und probieren Sie das Beispiel aus
Zeichnen Sie eine Aquarellillusion mit Kantenerkennung in Python3 und openCV3
Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.
Dateneingabe / -ausgabe in Python (CSV, JSON)
Speichern Sie Videos Frame für Frame mit Python OpenCV
Bilder mit Pupil, Python und OpenCV aufnehmen
Umgang mit "Jahren und Monaten" in Python
Leichte Bildverarbeitung mit Python x OpenCV
So fügen Sie OpenCV in Raspberry Pi ein und sammeln mit Python ganz einfach Bilder von Gesichtserkennungsergebnissen
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
Verfolgen Sie Objekte in Ihrem Video mit OpenCV Tracker
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert
Lesen Sie JSON mit Python und geben Sie CSV aus
Ich habe eine Fehlermeldung erhalten, als ich opencv mit Raspeye in Python3 eingefügt habe [Remedy]
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
Fügen Sie Python 2.7.x in pyenv unter Mac OSX 10.15.5 ein
Installieren Sie Shogun mit Python Modular (OS X Yosemite)
Feature Matching mit OpenCV 3 und Python 3 (A-KAZE, KNN)
Setzen Sie Scipy + Matplotlib in Ubuntu auf Vagrant und zeigen Sie die Grafik mit X11 Forwarding an
Es ist einfach, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Schreiben Sie mit OpenCV-Python Zeichen in die Kartenillustration
Berechnen Sie Pose- und Transformationsunterschiede in Python mit ROS
Ausgabeprotokoll im JSON-Format mit Python-Standardprotokollierung
Installieren Sie PyQt5 mit Homebrew unter Mac OS X Marvericks (10.9.2).
So schleifen und spielen Sie ein GIF-Video mit openCV ab
Conv in x-Richtung und Deconv in y-Richtung mit Chainer
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Lesen Sie die json-Datei mit Python, formatieren Sie sie und geben Sie json aus
Anzeigen und Aufnehmen von Webkamerabildern mit Python Kivy [GUI]
Japanische Ausgabe beim Umgang mit Python im Visual Studio
[Python] Webkamera-Rahmengröße und FPS-Einstellungen mit OpenCV
Suchen Sie rekursiv nach Dateien und Verzeichnissen in Python und geben Sie sie aus
Laden / Anzeigen und Beschleunigen von GIF mit Python [OpenCV]
Zeigen Sie das Bild der USB-Kamera mit OpenCV von Python mit Raspeye an
Tastenanschlag in Python
Python-Audioeingabe / -ausgabe
Japanische Ausgabe mit Python
Tastenanschlag in Python
Stolpern Sie mit opencv3 von Homebrew
Setzen Sie Ubuntu in Raspi ein, setzen Sie Docker darauf und steuern Sie GPIO mit Python aus dem Container
Veriloggen und Cocotb werden nur zum Entwerfen und Testen von Verilog in Python verwendet.
Fügen Sie Videos mit OpenCV + Python einen gefälschten Tilt-Shift-Effekt hinzu
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
Videos können in der Python-Entwicklungsumgebung nicht mit Spyder geladen werden