brew update
brew install -v cmake
brew tap homebrew/science
brew install opencv
export PYTHONPATH="/usr/local/lib/python2.7/site-packages/:$PYTHONPATH"
Machen Sie ein Bild von Messi und speichern Sie es als "messi.jpeg "
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import cv2
#Laden Sie das Originalbild
img = cv2.imread('messi.jpeg',cv2.IMREAD_UNCHANGED)
#Im Fenster anzeigen
cv2.imshow("result", img)
#Export
cv2.imwrite('img.jpg', img)
#Verarbeitung beenden
cv2.waitKey(0)
cv2.destroyAllWindows()
Wenn es nicht fertig ist, drücke Strg + Z, um es zu beenden
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()
#Ändern Sie die Stärke der Kontur
cv2.Canny()Ist eine Funktion, die nach der Canny-Methode verarbeitet und zwei Schwellenwerte festlegt. Je höher die Zahl, desto weniger Konturen werden geschrieben.
Klicken Sie hier für Details 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)
#Erkennen Sie den Ball
Wenn das Zielobjekt eine Standardform wie eine Linie oder ein Kreis ist, kann es mithilfe einer Huff-Transformation erkannt werden.
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()
Parameter
dp ・ ・ ・ Erhöhen, wenn die Auflösung des Originalbilds während der Verarbeitung verringert und erkannt wird. Wenn es beispielsweise 1 ist, wird es mit der gleichen Bildqualität verarbeitet, und wenn es 2 ist, wird es auf 1/2 reduziert. minDist ・ ・ ・ Mindestabstand zwischen erkannten Kreisen param1 ・ ・ ・ Es scheint, dass "der höhere der beiden Schwellenwerte in Cannys Kantendetektor verwendet wird". Je niedriger es ist, desto mehr Kanten werden erkannt. param2 ・ ・ ・ Schwellenwert zum Zeitpunkt der Berechnung der Mittenerkennung. Je niedriger es ist, desto mehr erkennt es Dinge, die keine Kreise sind. minRadius ・ ・ ・ Minimaler Radius maxRadius ・ ・ ・ Maximaler Radius
Dann kamen 5 Kandidaten heraus[x,y,Radius]
[[[ 125. 51. 16.27882004] [ 193. 161. 5.83095169] [ 131. 155. 8.24621105] [ 71. 73. 18.02775574] [ 161. 91. 17.80449295]]]
Zeichnen Sie den Kreis auf das Originalbild
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 ... es ist richtig, aber etwas Seltsames wird auch gezählt
Durch Einstellen der Parameter usw. war es möglich, nur das Gesicht und den Ball zu machen
(Ich hatte das Gefühl, ich sollte die Graustufen stoppen)
![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()
Wie. Mit einer Farbfista sieht es schöner aus
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/
Wenn Sie es zu einer App machen, wird es hilfreich sein
http://www.melt.kyutech.ac.jp/2015/onoue.pdf#search='opencv+ball+%E7%B2%BE%E5%BA%A6'
Wie kann man mit Razpie eine Jagdkamera bauen?
https://www.youtube.com/watch?v=58xxn6d_bUg
Als nächstes versuchen wir ein Video-Tutorial
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