我需要从这个图像(左上角,右上角,左下角和最后右下角)查找圆的半径和极坐标点(Hough Circle Transform)
图像在叠加回原始图像之前先通过阈值然后进行Canny边缘检测。
(通过油漆画),并将它们连接在一起(通过油漆画)
,但我怎么想得到半径和x y从中心开始坐标,然后画线?
for (int i = 0; i < circles.size(); i++)
{
//icout << i<<"\n"<<endl;
Point center(cvRound(circles[i][ 0]), cvRound(circles[i][1]));
stringstream ss;
ss << i + 1;
putText(dst, ss.str(), center, 1, 1, Scalar(255, 0, 225), 2, 0);
int radius = cvRound(circles[i][2]);
// circle center
circle(src, center, 3, Scalar(0, 255, 0), -1, 8, 0);
// circle outline
circle(src, center, radius, Scalar(0, 0, 255), 3, 8, 0);
//for original image overlap
circle(dst, center, 3, Scalar(0, 255, 0), -1, 8, 0);
// circle outline
circle(dst, center, radius, Scalar(0, 255, 255), 3, 8, 0);
}
这是演示代码,但我 从
for (int i = 0; i < circles.size(); i++)
和
努力理解有关 circles.size()Point center(cvRound(circles[i][ 0]), cvRound(circles[i][1]));
我会,如果感激你可以用更简单的方式向我解释这一点,因为我仍然在学习过程中,只是我开始的一个起点而已。 谢谢!
不完全是对您问题的回答,但可能是所有圈子的凸包是您最初想要的解决方案吗? http://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/hull/hull.html – Micka
@Micka是的!这正是我所需要的,除非我只需要大纲。我是否能够改变它的颜色,以便我能够将它设为阈值而仅获得没有内部轮廓的轮廓?我不太确定rng.uniform(0,255)是怎么做的,为什么它需要3个:l – Lyber
尝试'for(int i = 0; i(),0,Point()); } '只能以全红色绘制船体。 rng代码是一个随机数生成器,所以教程代码将以随机颜色绘制! –
Micka