我正在创建一个PapperSoccer项目,但是在寻找运动/线条的方向时遇到了问题。我正在使用HoughLinesP
来检测行,并且效果尽可能好。
我使用ROI
,在其中寻找一行,然后相应地移动它。
到目前为止,我使用差异来计算方向。
vector<Vec4i> lines;
HoughLinesP(dst, lines, 1, CV_PI / 180, 10, 5, 15);
Vec4i l = lines[i];
roznicax1 = x - (l[0] + abs(xRoi));
roznicax2 = x - (l[2] + abs(xRoi));
roznicay1 = y - (l[1] + abs(yRoi));
roznicay2 = y - (l[3] + abs(yRoi));
然后我有一些条件,根据结果,检查线路的前进方向(北,东北,南等)。
但是,当我将ROI超出图像范围时,就会出现问题。然后这些差异是不正确的,因此-错误地确定了运动的方向。
我可以用其他方式吗?
-该程序如何工作的照片
最佳答案
好的...假设您必须从摄像机图像中识别:确保要检测的线(当前的球移动)始终完全在ROI内。也许您可以扩大ROI以始终覆盖整个比赛 field ?并更改当前行的颜色?从霍夫结果线中,您可以选择线并测试每个结果线的第一个点是否感兴趣。
如果只有1条结果线,则表示检测成功,并且可以在其起点和终点使用Arc tangens公式来查找方向角(任何 Angular 都应该是接近栅格的 Angular ,这一事实可以用于最后检查
如果您无法更改颜色,则仍可以使用较大的ROI并跟踪所有行。任何新行应为当前移动行。
关于c++ - OPENCV:查找线的方向/角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54170339/