计算直线和边界矩形框之间的反射(斯诺克轨迹)

时间:2019-04-28 03:33:04

标签: c++ vector opencv3.0 houghlines

我是OpenCV和c ++的新手,我在绘制提示音的轨迹/反射时遇到了一些问题-球-斯诺克台球桌。

  1. 首先,我的问题是将提示线的反射绘制到我已经绘制的表格边界上。霍夫线的编码显示基本上可以检测到提​​示。我已经绘制了矩形以代表表格边界。我的问题是确定线与边界之间的交点。

  2. 第二个是从该交点绘制反射线。

这是我绘制矩形的图


int x = 39;
int y = 46;
int width = 720;
int height = 370;

Rect Rec(x, y, width, height);
rectangle(imgFrame, Rec, Scalar(255), 1, 8, 0);

这里是霍夫线变换,可以检测提示。当这条线与上面的矩形/边界相交时,我需要它来检测相交,并且还可以从该相交点绘制反射

vector<Vec2f> lines;
HoughLines(image_erode4, lines, 1, CV_PI / 180, 115, 0, 0);

Point pt1, pt2;
for (size_t i = 0; i < lines.size(); i++)
{
    float rho = lines[i][0], theta = lines[i][1];

    double a = cos(theta), b = sin(theta);
    double x0 = a * rho, y0 = b * rho;
    pt1.x = cvRound(x0 + 1000 * (-b));
    pt1.y = cvRound(y0 + 1000 * (a));
    pt2.x = cvRound(x0 - 1000 * (-b));
    pt2.y = cvRound(y0 - 1000 * (a));
    line(imgFrame, pt1, pt2, Scalar(250, 250, 255), 1, 16);
}

0 个答案:

没有答案