我有一个对象,我想定义它的确切中心。使用 OpenCV,我检测边缘,Canny
然后执行HoughLinesP
检测线:请参阅 this。
我使用霍夫变换是因为对象不是完全矩形的,有时这里会检测到凹凸。
行在结构中定义。我还计算了中点、角度和长度:
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/
另外,如果有人有更好的解决方案来检测准确的中心点,请说出来:)