【发布时间】:2013-08-23 11:18:41
【问题描述】:
我有一个对象,我想定义它的确切中心。使用 OpenCV,我使用 Canny 检测边缘,然后执行 HoughLinesP 检测线条:see this。
我使用霍夫变换是因为对象不是完全矩形的,有时会检测到凹凸here。
行在结构中定义。我还计算了中点、角度和长度:
struct hLine {
Point pStart, pEnd, pMidpoint;
float angle;
int length;
};
如您所见,沿侧面检测到多条线。
问题是:如何获取矩形每一边的最长线(本例中为 0、1、3、4)?
我尝试的方法是计算直线方程y = kx + n,然后按角度、长度和n对直线进行排序,并只保留具有n 以某个数字分隔(矩形的相对边)。我有垂直线的问题(n 无法计算),并且当对象几乎垂直时 n 数字很大,因此不会删除线。
下一步是计算线的交点,然后计算中心。想法基于本教程:opencv-code.com/tutorials/automatic-perspective-correction-for-quadrilateral-objects/
另外,如果有人有更好的解决方案来检测准确的中心点,请说出来:)
【问题讨论】:
标签: c++ algorithm opencv computer-vision