识别重叠的物体

时间:2019-03-19 11:43:44

标签: python-3.x image opencv image-recognition opencv-contour

我正在使用 Python 上的 OpenCV 处理图像,我想计算图像上的每个对象(蠕虫)。蠕虫是浅米色,而背景是黑色(见图),因此很容易区分它们。问题在于,有时蠕虫彼此之间距离太近(有时甚至重叠),并且 cv.findContours()会绘制一个大轮廓,而不是两个较小的轮廓(请参见下图)。

因为我使用的是 cv.foundContours(),所以我必须首先将图片变成黑白,然后对其进行模糊处理(可选),最后对其进行阈值处理,以使白色蠕虫进入黑色背景。

我正在使用以下代码:

import cv2 as cv
img = cv.imread('worms.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
blur=cv.GaussianBlur(gray,(5,5),1)
ret,osu = cv.threshold(blur,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)
imsource,contours,test = cv.findContours(osu,1,1)
cv.drawContours(img,contours,-1, (0,0,255),2)

我试图侵蚀阈值图像,但由于两个蠕虫之间的“结合”很大,因此效果不佳。

     Picture Processing

感谢您的帮助

0 个答案:

没有答案