我有一张显微镜照片。我想量化细胞nucli的数量(蓝色椭圆形 - 见图片原始图像)
为此我使用Python 2.7和OpenCV3。
首先,我在BGR中加载图像,然后提取蓝色图层
import cv2
import numpy as np
img = cv2.imread('image.jpg',1)
img_gray = img[:,:,0]
接下来,我制作了BINARY图像,然后我应用了形态开口,填充和测量轮廓(参见图片:GRAY-在阈值处理后,OP-n:打开n次后,'填充孔'并测量轮廓。
_, img_thres = cv2.threshold(img_gray, 40, 255, cv2.THRESH_BINARY)
对于iterations = 2,请参见上面板(OP-2)
kernel = np.ones((2,2),np.uint8)
img_op = cv2.morphologyEx(img_thres, cv2.MORPH_OPEN, kernel, iterations =2)
或
对于迭代次数= 20,请参阅底部面板(OP-20)
img_op = cv2.morphologyEx(img_thres, cv2.MORPH_OPEN, kernel, iterations =20)
为简单起见,我正在滑动填充和轮廓代码。
您可以看到轮廓如何移动,它们在开始变换期间向正确的比例转换为迭代次数。
**** **** EDIT
没有验证它,但也许是因为你的内核大小合适? 尝试一个奇怪的内核大小,请像3或5. - Micka
你是对的! 看图片(开放迭代= 20):