Mettez OpenCV dans OS X avec Homebrew et vidéo d'entrée / sortie avec python

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.

Que faire dans cet article

Ce que vous ne comprenez pas dans cet article

Installation

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.

Afficher la vidéo (fichier AVI)

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.

example2-3.png

Enregistrer l'image de la caméra en tant que vidéo (fichier AVI)

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.

Filtrer les vidéos

À 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.

example2-6.png

Résumé

Recommended Posts

Mettez OpenCV dans OS X avec Homebrew et vidéo d'entrée / sortie avec python
entrée et sortie python
Démarrer le calcul numérique avec Python (avec Homebrew et pip)
Nombre de mots avec Apache Spark et python (Mac OS X)
Tester Python avec Miniconda dans un environnement OS X et Linux avec travis-ci
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
Installez Python 2.7.9 et Python 3.4.x avec pip.
Réseau neuronal avec OpenCV 3 et Python 3
Mettez python, numpy, opencv3 dans ubuntu14
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
Exporter et exporter des fichiers en Python
Utiliser OpenCV avec Python 3 dans Window
Installez rapidement OpenCV2.4 (+ python) sur OS X et essayez l'exemple
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
Installez lp_solve sur Mac OSX et appelez-le avec python.
Entrée / sortie de données en Python (CSV, JSON)
Enregistrer la vidéo image par image avec Python OpenCV
Capturer des images avec Pupil, python et OpenCV
Gérer les "années et mois" en Python
Traitement d'image léger avec Python x OpenCV
Comment mettre OpenCV dans Raspberry Pi et collecter facilement des images des résultats de détection de visage avec Python
Hello World et détection de visage avec OpenCV 4.3 + Python
Mettez Docker dans Windows Home et exécutez un serveur Web simple avec Python
Suivez les objets de votre vidéo avec OpenCV Tracker
J'ai installé Pygame avec Python 3.5.1 dans l'environnement de pyenv sur OS X
Lire JSON avec Python et générer un CSV
J'ai eu une erreur lorsque j'ai mis opencv dans python3 avec Raspeye [Remedy]
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Mettez Python 2.7.x dans pyenv sur Mac OSX 10.15.5
Installer shogun avec python modulaire (OS X Yosemite)
Correspondance des fonctionnalités avec OpenCV 3 et Python 3 (A-KAZE, KNN)
Mettez Scipy + Matplotlib dans Ubuntu sur Vagrant et affichez le graphique avec X11 Forwarding
Il est facile d'exécuter SQL avec Python et de générer le résultat dans Excel
Obtenez une sortie standard en temps réel avec le sous-processus Python
Ecrire des caractères dans l'illustration de la carte avec OpenCV python
Calculer la différence entre Pose et Transform avec ROS en Python
Journal de sortie au format JSON avec journalisation standard Python
Installez PyQt5 avec homebrew sur Mac OS X Marvericks (10.9.2)
Comment boucler et lire une vidéo gif avec openCV
Conv en direction x et déconv en direction y avec chainer
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Lire le fichier json avec Python, le formater et générer le json
Afficher et prendre des images de caméra Web avec Python Kivy [GUI]
Sortie japonaise lors de l'utilisation de python dans Visual Studio
[Python] Taille d'image de la caméra Web et paramètres FPS avec OpenCV
Recherche récursive de fichiers et de répertoires en Python et sortie
Chargement / affichage et accélération de gif avec python [OpenCV]
Afficher l'image de la caméra USB avec OpenCV de Python avec Raspeye
Séquence de touches en Python
Entrée / sortie audio Python
Sortie japonaise avec Python
Séquence de touches en Python
Trébucher avec opencv3 de homebrew
Mettez Ubuntu dans Raspi, mettez Docker dessus et contrôlez GPIO avec python à partir du conteneur
Veriloggen et cocotb sont utilisés pour concevoir et tester Verilog en Python uniquement.
Ajoutez un faux effet d'inclinaison aux vidéos avec OpenCV + Python
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
Créez des jeux LCD (16x2) avec Raspberry Pi et Python
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
La vidéo ne peut pas être chargée avec Spyder dans l'environnement de développement Python