Introduction à l'analyse d'image opencv python

Installez ce qui suit sur mac

brew update
brew install -v cmake
brew tap homebrew/science
brew install opencv
export PYTHONPATH="/usr/local/lib/python2.7/site-packages/:$PYTHONPATH"

Capturez et affichez des images

Prenez une image de Messi et enregistrez-la sous "messi.jpeg " messi5.jpeg

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import cv2

 
#Chargez l'image d'origine
img = cv2.imread('messi.jpeg',cv2.IMREAD_UNCHANGED)
#Afficher dans la fenêtre
cv2.imshow("result", img)
#Exportation
cv2.imwrite('img.jpg', img)
#Terminer le traitement
cv2.waitKey(0)
cv2.destroyAllWindows()

Si cela ne se termine pas, appuyez sur Ctrl + z pour le tuer

Faites-en une échelle de gris

gray_img = cv2.imread('messi.jpeg', cv2.IMREAD_GRAYSCALE)
cv2.imshow("result", gray_img)

gray_messi.png

Faire uniquement des contours

canny_img = cv2.Canny(gray_img, 50, 110)
cv2.imshow("result", canny_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

canny_messi.png


#Changer la force du contour
cv2.Canny()Est une fonction qui traite par la méthode Canny et définit deux seuils. Plus le nombre est élevé, moins les contours seront écrits.
Cliquez ici pour plus de détails http://postd.cc/image-processing-101/

canny_img = cv2.Canny(gray_img, 200, 400)

![canny_img.jpg](https://qiita-image-store.s3.amazonaws.com/0/124303/8c6aa42f-891c-b165-04b3-75b83c929e12.jpeg)

#Détecter la balle
Si l'objet cible est une forme standard telle qu'une ligne ou un cercle, il peut être détecté à l'aide d'une transformation de huff.

circles = cv2.HoughCircles(canny_img, cv2.cv.CV_HOUGH_GRADIENT, dp=2, minDist=50, param1=20, param2=30, minRadius=5, maxRadius=20 ) print circles import matplotlib.pyplot as plt plt.imshow(canny_img) plt.show()

Paramètres

dp ・ ・ ・ Augmentez si la résolution de l'image originale est réduite et détectée pendant le traitement. Par exemple, s'il vaut 1, il sera traité avec la même qualité d'image, et s'il vaut 2, il sera réduit à 1/2. minDist ・ ・ ・ Distance minimale entre les cercles détectés param1 ・ ・ ・ Il semble que "le plus élevé des deux seuils utilisés dans le détecteur de bord de Canny". Plus il est bas, plus les arêtes sont détectées. param2 ・ ・ ・ Seuil au moment du calcul de détection du centre. Plus il est bas, plus il détecte des choses qui ne sont pas des cercles. minRadius ・ ・ ・ Rayon minimum maxRadius ・ ・ ・ Rayon maximum

Puis, 5 candidats sont sortis[x,y,rayon]

[[[ 125. 51. 16.27882004] [ 193. 161. 5.83095169] [ 131. 155. 8.24621105] [ 71. 73. 18.02775574] [ 161. 91. 17.80449295]]]


Tracez le cercle sur l'image d'origine

cups_circles = np.copy(img)

if circles is not None and len(circles) > 0: circles = circles[0] for (x, y, r) in circles: x, y, r = int(x), int(y), int(r) cv2.circle(cups_circles, (x, y), r, (255, 255, 0), 4) plt.imshow(cv2.cvtColor(cups_circles, cv2.COLOR_BGR2RGB)) plt.show()

print('number of circles detected: %d' % len(circles[0]))

![figure_1.png](https://qiita-image-store.s3.amazonaws.com/0/124303/be507713-acfe-917d-fdcc-2902950aa7e6.png)

Hmm ... c'est correct, mais quelque chose d'étrange est aussi compté

En ajustant les paramètres etc., il était possible de ne faire que le visage et la balle
(J'ai senti que je devais arrêter les niveaux de gris)
![figure_1.png](https://qiita-image-store.s3.amazonaws.com/0/124303/70aa9f57-4307-8af4-87d4-bac6e64b580b.png)

!/usr/bin/env python -- coding: utf-8 -- import numpy as np import cv2 import matplotlib.pyplot as plt

img = cv2.imread('messi5.jpeg',cv2.IMREAD_UNCHANGED) canny_img = cv2.Canny(img, 230, 500)

find hough circles circles = cv2.HoughCircles(canny_img, cv2.cv.CV_HOUGH_GRADIENT, dp=2, minDist=100, param1=25, param2=30, minRadius=5, maxRadius=20 ) print circles

cups_circles = np.copy(img)

if circles are detected, draw them if circles is not None and len(circles) > 0: # note: cv2.HoughCircles returns circles nested in an array. # the OpenCV documentation does not explain this return value format circles = circles[0] for (x, y, r) in circles: x, y, r = int(x), int(y), int(r) cv2.circle(cups_circles, (x, y), r, (255, 255, 0), 4) plt.imshow(cv2.cvtColor(cups_circles, cv2.COLOR_BGR2RGB)) plt.show()

cv2.waitKey(0) cv2.destroyAllWindows()


Comment. Il est plus beau avec une couleur fista
http://stackoverflow.com/questions/22870948/how-can-i-pythonically-us-opencv-to-find-a-a-basketball-in-an-image
http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/


Si vous en faites une application, ce sera utile
http://www.melt.kyutech.ac.jp/2015/onoue.pdf#search='opencv+ball+%E7%B2%BE%E5%BA%A6'

Comment pouvez-vous faire une caméra de poursuite avec Razpie!
https://www.youtube.com/watch?v=58xxn6d_bUg

Ensuite, essayons un didacticiel vidéo
http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_gui/py_video_display/py_video_display.html


Recommended Posts

Introduction à l'analyse d'image opencv python
Introduction à OpenCV (python) - (2)
Introduction au langage Python
Comment recadrer une image avec Python + OpenCV
opencv-python Introduction au traitement d'image
Introduction à Python Django (2) Win
Édition d'image avec python OpenCV
[Introduction à Python] <liste> [modifier le 22/02/2020]
Introduction à Python (version Python APG4b)
Une introduction à la programmation Python
Introduction à Python pour, pendant
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
Note de lecture: Introduction à l'analyse de données avec Python
[Livre technique] Introduction à l'analyse de données avec Python -1 Chapitre Introduction-
Python Open CV a essayé d'afficher l'image sous forme de texte.
[Présentation de l'application Udemy Python3 +] 58. Lambda
[Présentation de l'application Udemy Python3 +] 31. Commentaire
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Introduction à la bibliothèque de calcul numérique Python NumPy
Entraine toi! !! Introduction au type Python (conseils de type)
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
[Introduction à Python] <numpy ndarray> [modifier le 22/02/2020]
[Présentation de l'application Udemy Python3 +] 57. Décorateur
Introduction à Python Hands On Partie 1
[Introduction à Python3 Jour 13] Chapitre 7 Chaînes de caractères (7.1-7.1.1.1)
[Introduction à Python] Comment analyser JSON
Workflow pour convertir une formule (image) en python
[Introduction à Python3 Jour 14] Chapitre 7 Chaînes de caractères (7.1.1.1 à 7.1.1.4)
Introduction à Protobuf-c (langage C ⇔ Python)
20200329_Introduction à l'analyse de données avec Python 2nd Edition Personal Summary
[Présentation de l'application Udemy Python3 +] 59. Générateur
[Introduction à Python3 Jour 15] Chapitre 7 Chaînes de caractères (7.1.2-7.1.2.2)
[Introduction à Python] Utilisons les pandas
[Introduction à Python] Utilisons les pandas
[Introduction à l'application Udemy Python3 +] Résumé
[Introduction à Python] Utilisons les pandas
Premiers pas avec Python pour les non-ingénieurs
Introduction à Python Django (2) Édition Mac
[AWS SAM] Présentation de la version Python
[Introduction à Python3 Day 21] Chapitre 10 Système (10.1 à 10.5)
[Tutoriel Python] Une introduction facile à Python
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
[Introduction à Udemy Python3 + Application] 18. Méthode List
[Introduction à l'application Udemy Python3 +] 28. Type collectif
[Introduction à Python] Comment utiliser la classe en Python?
mail html avec image à envoyer avec python
[Introduction à Udemy Python3 + Application] 25. Méthode de type dictionnaire
[Introduction à l'application Udemy Python3 +] 33. instruction if
Introduction à la simulation d'événements discrets à l'aide de Python # 1
[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.1-8.2.5)
[Introduction à l'application Udemy Python3 +] 55. Fonctions intégrées
[Introduction à l'application Udemy Python3 +] 48. Définition des fonctions
[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.3-8.3.6.1)
Super Introduction Arithmétique Bit Python
[Introduction à l'application Udemy Python3 +] 10. Valeur numérique
Une introduction à OpenCV pour l'apprentissage automatique
[Introduction à l'application Udemy Python3 +] 21. Type Taple