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.
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.
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.
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.
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.
Recommended Posts