【发布时间】:2015-03-03 15:30:42
【问题描述】:
嘿,我正在做过去两周的路标检测项目,我遇到了从图像中检测椭圆的主要问题。谁能告诉我如何处理这个问题!!!你可以看到结果和代码。谢谢
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(GreyImage, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
for (size_t i = 0; i < contours.size(); i++)
{
Mat pointsf;
Mat(contours[i]).convertTo(pointsf, CV_32F);
RotatedRect box = fitEllipse(pointsf);
ellipse(OrignalImg, box, Scalar(0, 0, 255), 1, 8);
}
【问题讨论】:
-
为什么这个 fitellipse 函数也将线拟合为椭圆?我怎样才能摆脱这个问题??
-
椭圆拟合不是椭圆检测!
-
@Micka 那么我们如何检测椭圆??
-
没有检测椭圆的openCV功能。如果我必须实现它,我会实现一些 RANSAC 方法。或者尝试为椭圆找到/创建一个 HoughTransform。
-
如果你可以隔离你的椭圆和其他对象,你可以在每个轮廓上使用 fitEllipse,然后测试/比较你找到的椭圆和你的精明边缘,以确定你的 fitEllipse 是否真的是一个椭圆或其他东西;)