Недавно я начал работать над проектом с OpenCV и C ++.Я рисую кривую линию на десмосе и вставляю ее в программу.Цель программы - измерить, насколько изогнута линия и насколько ее выпрямить.
Красная линия, изображенная на рисунке ниже (с зелеными и красными точками на ней) - это линия, обозначенная на графике.из десмосаФиолетовая линия с полыми кругами - это модельная линия, которую нужно встретить.Я написал несколько основных функций для вычисления того, каким будет каждое значение x данного значения y на прямой линии.Я сделал это для того, чтобы выровнять точки из кривой линии с точками на прямой линии.
Код для вычисления значений:
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, но не смог получить гибкий результат, который я получил бы, если бы использовал свои собственные функции.
Спасибозаранее, любая помощь приветствуется.