Notez que j'ai appris qu'il existe un moyen de reconnaître et de découper des objets circulaires.
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
.
Je n'avais pas la bonne image, j'ai donc téléchargé et utilisé l'exemple ImageJ.
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))
Pas mal. En fonction de l'ajustement de «param1» et «param2», il semble que les cellules peuvent être comptées correctement.
Recommended Posts