Рассчитать отражение между линией и прямоугольником ограничивающего прямоугольника (траектории снукера)

Я новичок в 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 ответов

Другие вопросы по тегам