[PYTHON] Reconnaissance d'objet circulaire à l'aide de la transformation de Huff

Notez que j'ai appris qu'il existe un moyen de reconnaître et de découper des objets circulaires.

Préparation

Préparation à OpenCV

Tout d'abord, rendez OpenCV disponible depuis Python.

Dans l'environnement récent d'Anaconda, Python 3.6 est installé, mais le package conda OpenCV3 pour l'environnement osx-64 qui peut être installé sur Python 3.6 n'a pas été publié, alors préparez l'environnement Python 3.5.

Pour le moment, j'ai créé un environnement virtuel avec conda.

conda create -n py35 python=3.5 anaconda

Ensuite, après source ~ / .pyenv / versions / anaconda3-4.4.0 / bin / activate py35, faites conda install --channel https://conda.anaconda.org/menpo opencv3.

Préparation de l'image d'échantillon

Je n'avais pas la bonne image, j'ai donc téléchargé et utilisé l'exemple ImageJ.

embryos_mini.jpg

Mettre en place

Essayez de l'implémenter en vous référant à http://docs.opencv.org/3.1.0/da/d53/tutorial_py_houghcircles.html.

houghcircles_sample.py


import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('img/embryos.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.medianBlur(gray, 5)

circles = cv2.HoughCircles(blur, cv2.HOUGH_GRADIENT,
								dp=1, minDist=20, param1=50, param2=30,
								minRadius=10, maxRadius=100)
circles = np.uint16(np.around(circles))
for (x, y, r) in circles[0]:
	cv2.circle(img, (x, y), r, (0, 255, 0), 2)
	cv2.circle(img, (x, y), 2, (0, 0, 255), 3)

plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

Résultat d'exécution

result.png

Pas mal. En fonction de l'ajustement de «param1» et «param2», il semble que les cellules peuvent être comptées correctement.


Code du jour

Recommended Posts

Reconnaissance d'objet circulaire à l'aide de la transformation de Huff
Essayez la reconnaissance d'objets en temps réel avec YOLOv2 (TensorFlow)
Reconnaissance de l'âge à l'aide de l'API de Pepper
J'ai essayé la reconnaissance faciale avec Face ++
Conversion discrète de cosinus à l'aide de chainer.links.Linear
Effectuer la reconnaissance de caractères manuscrits à l'aide de Pylearn 2
Co-localisation d'objets pour la reconnaissance faciale