Перерисовка линии из двух точек дает немного неточные результаты - PullRequest
0 голосов
/ 09 октября 2018

Недавно я начал работать над проектом с OpenCV и C ++.Я рисую кривую линию на десмосе и вставляю ее в программу.Цель программы - измерить, насколько изогнута линия и насколько ее выпрямить.

Красная линия, изображенная на рисунке ниже (с зелеными и красными точками на ней) - это линия, обозначенная на графике.из десмосаФиолетовая линия с полыми кругами - это модельная линия, которую нужно встретить.Я написал несколько основных функций для вычисления того, каким будет каждое значение x данного значения y на прямой линии.Я сделал это для того, чтобы выровнять точки из кривой линии с точками на прямой линии.

In correct slope calculation

Код для вычисления значений:

double slopeOf(Point first, Point second) {
    return (second.y - first.y) / (second.x - first.x);
}

double f(Point first, Point second, int y) {
    // return x of point with y value, on given line
    return ((y - first.y) / slopeOf(first, second)) + first.x;
}

Как видите, пустые точки нанижняя часть линии отцентрирована с прямой линией, и они точны.Но чем выше вы поднимаетесь по линии, точки начинают отклоняться от линии.

Почему это происходит?

Также: я устал от использования LineIterator в OpenCV, но не смог получить гибкий результат, который я получил бы, если бы использовал свои собственные функции.

Спасибозаранее, любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...