Einführung in die Bildanalyse opencv python

Installieren Sie Folgendes auf dem Mac

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

Bilder aufnehmen und anzeigen

Machen Sie ein Bild von Messi und speichern Sie es als "messi.jpeg " messi5.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

Machen Sie es Graustufen

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

gray_messi.png

Machen Sie nur Konturen

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

canny_messi.png


#Ä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

Einführung in die Bildanalyse opencv python
Einführung in OpenCV (Python) - (2)
Einführung in die Python-Sprache
So beschneiden Sie ein Bild mit Python + OpenCV
opencv-python Einführung in die Bildverarbeitung
Einführung in Python Django (2) Win
Bildbearbeitung mit Python OpenCV
[Einführung in Python] <Liste> [Bearbeiten: 22.02.2020]
Einführung in Python (Python-Version APG4b)
Eine Einführung in die Python-Programmierung
Einführung in Python For, While
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Lesehinweis: Einführung in die Datenanalyse mit Python
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
Python Open CV hat versucht, das Bild im Text anzuzeigen.
[Einführung in die Udemy Python3 + -Anwendung] 58. Lambda
[Einführung in die Udemy Python3 + -Anwendung] 31. Kommentar
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Einführung in die Python Numerical Calculation Library NumPy
Trainieren! !! Einführung in Python Type (Type Hints)
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
[Einführung in Python] <numpy ndarray> [edit: 2020/02/22]
[Einführung in die Udemy Python3 + -Anwendung] 57. Decorator
Einführung in Python Hands On Teil 1
[Einführung in Python3 Tag 13] Kapitel 7 Zeichenfolgen (7.1-7.1.1.1)
[Einführung in Python] So analysieren Sie JSON
Workflow zum Konvertieren der Formel (Bild) in Python
[Einführung in Python3 Tag 14] Kapitel 7 Zeichenfolgen (7.1.1.1 bis 7.1.1.4)
Einführung in Protobuf-c (C-Sprache ⇔ Python)
20200329_Einführung in die Datenanalyse mit Python 2nd Edition Personal Summary
[Einführung in die Udemy Python3 + -Anwendung] 59. Generator
[Einführung in Python3 Tag 15] Kapitel 7 Zeichenfolgen (7.1.2-7.1.2.2)
[Einführung in Python] Verwenden wir Pandas
[Einführung in Python] Verwenden wir Pandas
[Einführung in die Udemy Python3 + -Anwendung] Zusammenfassung
[Einführung in Python] Verwenden wir Pandas
Erste Schritte mit Python für Nicht-Ingenieure
Einführung in Python Django (2) Mac Edition
[AWS SAM] Einführung in die Python-Version
[Einführung in Python3 Tag 21] Kapitel 10 System (10.1 bis 10.5)
[Python Tutorial] Eine einfache Einführung in Python
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
Einführung in die Python-Grundlagen des maschinellen Lernens (unbeaufsichtigtes Lernen / Hauptanalyse)
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
[Einführung in die Udemy Python3 + -Anwendung] 18. Listenmethode
[Einführung in die Udemy Python3 + -Anwendung] 28. Kollektiver Typ
[Einführung in Python] Wie verwende ich eine Klasse in Python?
HTML-Mail mit Bild zum Senden mit Python
[Einführung in die Udemy Python3 + -Anwendung] 25. Wörterbuchmethode
[Einführung in die Udemy Python3 + -Anwendung] 33. if-Anweisung
Einführung in die diskrete Ereignissimulation mit Python # 1
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.1-8.2.5)
[Einführung in die Udemy Python3 + -Anwendung] 55. In-Function-Funktionen
[Einführung in die Udemy Python3 + -Anwendung] 48. Funktionsdefinition
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
Python Bit Arithmetic Super Einführung
[Einführung in die Udemy Python3 + -Anwendung] 10. Numerischer Wert
Eine Einführung in OpenCV für maschinelles Lernen
[Einführung in die Udemy Python3 + -Anwendung] 21. Taple-Typ