Я использую OpenCV для установки строке от ряда использования точек cvFitLine()
cvFitLine()
возвращает нормализованный вектор, который является колинейным к строке и точке на строке. Посмотрите детали здесь
Используя эту информацию, как я могу получить уравнение строки так, чтобы я мог разграничить?
Если cvFitLine()
возвращает нормализованный вектор (vx,vy)
и точку (x0, y0)
, тогда уравнение прямой будет
(x,y) = (x0,y0) + t*(vx,vy)
где t
проходит от -∞ до +∞.
Это то, о чем вы просили, но, вероятно, не сразу поможет провести линию. Вы хотите прикрепить ее либо к границам экрана, либо к границам исходного набора точек. Чтобы прикрепить линию к прямоугольнику, просто решите задачу для значений t
, где линия пересекает границу прямоугольника.
Просто нарисуйте большую линию вместо того, чтобы определять границы. например:
cv.Line(img, (x0-m*vx[0], y0-m*vy[0]), (x0+m*vx[0], y0+m*vy[0]), (0,0,0))
сделает это, например .. для достаточно большого m:)