c++ - OPENCV:查找线的方向/角度

标签 c++ opencv roi

我正在创建一个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超出图像范围时,就会出现问题。然后这些差异是不正确的,因此-错误地确定了运动的方向。

我可以用其他方式吗?

https://imgur.com/a/BkSYyqw-该程序如何工作的照片

最佳答案

好的...假设您必须从摄像机图像中识别:确保要检测的线(当前的球移动)始终完全在ROI内。也许您可以扩大ROI以始终覆盖整个比赛 field ?并更改当前行的颜色?从霍夫结果线中,您可以选择线并测试每个结果线的第一个点是否感兴趣。

如果只有1条结果线,则表示检测成功,并且可以在其起点和终点使用Arc tangens公式来查找方向角(任何 Angular 都应该是接近栅格的 Angular ,这一事实可以用于最后检查

如果您无法更改颜色,则仍可以使用较大的ROI并跟踪所有行。任何新行应为当前移动行。

关于c++ - OPENCV:查找线的方向/角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54170339/

相关文章:

c++ - 如何通过迭代解决0-1包问题?

C++ : Need help on decrypting a zip file and extracting the contents to memory

Python OpenCV - 自定义掩码

c++ - 是否可以创建和使用 MatIterator 数组?

c++ - OpenCV 像素访问指针与 at() - 不同的值

c++ - 错误 C2440 : 'initializing' : cannot convert from 'std::_Vector_iterator<_Ty,_Alloc>' to 'type *'

python + opencv - 如何正确比较图像(通过直方图)?

c++ - OpenCV:创建透明蒙版?

python - 如何在python中使用opencv复制图像区域?

c++ - 在 C++ 中创建对三元运算符结果的 const 引用是否安全?