Je voulais déplacer un peu OpenCV, alors j'ai essayé de l'installer sur mac, donc je suis resté bloqué, c'est donc un article pour afficher et enregistrer le fichier AVI au lieu d'un mémorandum.
Gardez Homebrew à jour.
L'environnement python semble être incompatible avec l'installation d'opencv via Homebrew dans le cas de l'environnement où la version de pyenv est commutée, et la compilation n'a pas réussi.
J'ai abandonné pyenv et installé python depuis Homebrew. Le Homebrew par défaut n'est pas fourni avec OpenCV, vous devez donc installer une bibliothèque pour l'informatique.
Référence 1: Comment installer OpenCV avec Homebrew
Eh bien, je voudrais aller avec l'installation, mais avant d'installer OpenCV, je vais installer ceci et cela pour gérer les vidéos. Si vous ne le faites pas, l'image fixe est correcte, mais j'ai du mal à traiter la vidéo avec une erreur.
Référence 2: Construction d'un environnement OpenCV + Python avec virtualenvwrapper (2) Référence 3: [Comment installer FFmpeg et créer des vidéos WebM sur 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)
Si vous partez de l'endroit où python n'est pas inclus, ce sera comme suit. Si numpy n'est pas inclus, l'installation d'OpenCV peut échouer, je l'ai donc incluse en premier.
La zone autour de ffmpeg peut être un peu excessive. Pour le moment, je n'aime pas OpenCV si une erreur se produit plus tard, j'ai donc répertorié toutes les options.
$ 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
La compilation d'OpenCV prend beaucoup de temps (environ 10 minutes dans l'environnement MacBook Air), mais attendez patiemment.
Explication détaillée Dans l'exemple OpenCV, il y a un exemple de lecture d'un fichier AVI et de son affichage avec un curseur (barre de piste) à l'écran, donc implémentez ceci en Python.
example2-3.py
# coding: UTF-8
import numpy as np
import cv2
#Référence d'implémentation http://www.beechtreetech.com/opencv-exercises-in-python
#Changé pour utiliser cv2
updatelock = False #Verrouiller l'indicateur pendant le traitement de la barre de suivi
windowname = 'frame' #Nom de la fenêtre
trackbarname = 'Position' #Nom de la barre de suivi
#Lire le fichier AVI
#avi récupère un échantillon de longueur appropriée sur Internet
#référence:http://www.engr.colostate.edu/me/facil/dynamics/avis.htm
cap = cv2.VideoCapture('drop.avi')
#Définition de la fonction de rappel qui est appelée lorsque la barre de piste est déplacée
def onTrackbarSlide(pos):
updatelock = True
cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, pos)
updatelock = False
#Définir une fenêtre nommée
cv2.namedWindow(windowname, cv2.WINDOW_NORMAL)
#Obtenez le nombre d'images dans un fichier AVI
frames = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))
#Si le nombre d'images est égal ou supérieur à 1, définissez-le dans la barre de piste
if (frames > 0):
cv2.createTrackbar(trackbarname, windowname, 0, frames, onTrackbarSlide)
#Répéter lors de l'ouverture du fichier AVI (terminer après la lecture jusqu'à la dernière image)
while(cap.isOpened()):
#Ne pas dessiner lors de la mise à jour de la barre de suivi
if (updatelock):
continue
#Lire 1 image
ret, frame = cap.read()
#Si vous ne pouvez pas le lire, quittez
if ret == False:
break
#Affichage à l'écran
cv2.imshow(windowname,frame)
#Obtenez le numéro de l'image actuelle
curpos = int(cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES))
#Défini dans la barre de piste (la fonction de rappel est appelée)
cv2.setTrackbarPos(trackbarname, windowname, curpos)
#Appuyez sur q pour quitter
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#Libérer le fichier AVI
cap.release()
#Fermer la fenêtre
cv2.destroyAllWindows()
Si l'installation d'OpenCV réussit, la fenêtre s'ouvrira et la vidéo s'affichera sans aucune erreur lors de l'exécution. Il se terminera automatiquement lorsque vous atteindrez la fin. Lorsque vous utilisez la barre de piste, la suite est lue à partir de cette scène.
Voici un exemple qui utilise la caméra intégrée du Mac pour enregistrer l'image de la caméra telle quelle.
example_cam.py
# coding: UTF-8
import numpy as np
import cv2
#Spécifier la capture depuis la caméra
cap = cv2.VideoCapture(0)
#Spécification du code de code
fourcc = cv2.cv.CV_FOURCC('m', 'p', '4', 'v')
#Spécifiez le fichier de sauvegarde, la fréquence d'images et la taille
out = cv2.VideoWriter('output.m4v',fourcc, 30, (640,480))
#Traitez en permanence lorsque la caméra est ouverte
while(cap.isOpened()):
#Extraire l'image capturée
ret, frame = cap.read()
#Quitter s'il n'y a pas de données
if ret==False:
break
#Ecrire l'image dans un fichier
out.write(frame)
#Image de sortie à l'écran
cv2.imshow('frame',frame)
# "q"Quitter lorsque vous appuyez sur
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#Nettoyer
cap.release()
out.release()
cv2.destroyAllWindows()
L'image de la caméra est sortie sur l'écran. En même temps, l'écriture dans le fichier est également effectuée. Le fichier de sortie peut être lu directement depuis mac au format m4v, voyons donc s'il peut être lu.
À la fin, comme OpenCV, filtrons la vidéo chargée. Le fichier avi d'origine est entré et l'image après traitement est utilisée comme informations de sortie, les deux étant affichées à l'écran.
example2-6.py
# coding: UTF-8
import numpy as np
import cv2
import cv2.cv as cv
updatelock = False #Verrouiller l'indicateur pendant le traitement de la barre de suivi
windowname_in = 'inframe' # Window(L'image originale)Le nom de
windowname_out = 'outframe' # Window(Image convertie)Le nom de
trackbarname = 'Position' #Nom de la barre de suivi
#Lire le fichier AVI
cap = cv2.VideoCapture('drop.avi')
#Définition de la fonction de rappel qui est appelée lorsque la barre de piste est déplacée
def onTrackbarSlide(pos):
updatelock = True
cap.set(cv.CV_CAP_PROP_POS_FRAMES, pos)
updatelock = False
#Détection de bord Canny
def doCanny(img):
#Convertir une image couleur en image grise
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
return cv2.Canny(gray, 100, 200)
#Définir une fenêtre nommée
cv2.namedWindow(windowname_in, cv2.WINDOW_NORMAL)
cv2.namedWindow(windowname_out, cv2.CV_WINDOW_AUTOSIZE)
#Obtenez le nombre d'images dans un fichier AVI
frames = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))
#Si le nombre d'images est égal ou supérieur à 1, définissez-le dans la barre de piste
if (frames > 0):
cv2.createTrackbar(trackbarname, windowname_in, 0, frames, onTrackbarSlide)
#Répéter lors de l'ouverture du fichier AVI
while(cap.isOpened()):
#Ne pas dessiner lors de la mise à jour de la barre de suivi
if (updatelock):
continue
#Lire 1 image
ret, frame = cap.read()
#Si vous ne pouvez pas le lire, quittez
if ret == False:
break
#Affichage à l'écran
cv2.imshow(windowname_in,frame)
cv2.imshow(windowname_out,doCanny(frame))
#Obtenez le numéro de l'image actuelle
curpos = int(cap.get(cv.CV_CAP_PROP_POS_FRAMES))
#Défini dans la barre de piste (la fonction de rappel est appelée)
cv2.setTrackbarPos(trackbarname, windowname_in, curpos)
#Appuyez sur q pour quitter
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#Libérer le fichier AVI
cap.release()
#Fermer la fenêtre
cv2.destroyAllWindows()
Détecte le bord de la vidéo et l'affiche dans la fenêtre Outframe.
Recommended Posts