OPENCV检测近物

时间:2013-12-06 14:51:49

标签: c++ opencv image-processing object-detection

我正在学习opencv,我有一个问题要问你。我得到了最终处理过的图像。 objects detection

原始图像是两个接近的球,它们是相同的颜色。我会得到每个球的中心和半径。如果球是远的,我使用findContours和drawContours选项CV_FILLED这样做,所以我可以做每个球的像素位置的平均值,我得到中心。问题是当球靠近时,我没有得到两个不同的轮廓,我不能做像素位置的平均值。我获得此图像(中心用圆圈表示): enter image description here

你可以提一些建议吗? 我使用Canny算法进行边缘检测。

2 个答案:

答案 0 :(得分:2)

我写了一个简单的matlab代码来检测两个圆圈:

filen='http://i.stack.imgur.com/sDNS8.jpg'  % your image
I=imread(filen);

I=im2bw(I(:,:,3)); % gray scale

Rmin=20;Rmax=70;  % circle range

% find circles in the image with Hough transform
[centersDark, radiiDark] = imfindcircles(I, [Rmin Rmax], ...
                                        'ObjectPolarity','dark','sensitivity',0.93)
                                    imagesc(I),hold on
 viscircles(centersDark, radiiDark,'LineStyle','--');hold off

结果: enter image description here

正如上面提到的@ChronoTrigger,opencv中的hough变换包应该适用于你的情况。

答案 1 :(得分:1)

霍夫变换是检测图像中几何实体的常用方法。 OpenCV具有为圆圈实现的功能。看看这个:

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html