brew update
brew install -v cmake
brew tap homebrew/science
brew install opencv
export PYTHONPATH="/usr/local/lib/python2.7/site-packages/:$PYTHONPATH"
Prenez une image de Messi et enregistrez-la sous "messi.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
gray_img = cv2.imread('messi.jpeg', cv2.IMREAD_GRAYSCALE)
cv2.imshow("result", gray_img)
canny_img = cv2.Canny(gray_img, 50, 110)
cv2.imshow("result", canny_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#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