Non ci sono alcuna funzione in OpenCV API per calcolare le linee di intersezione, ma la distanza è:
cv::Point2f start, end;
double length = cv::norm(end - start);
Se avete bisogno di un pezzo di codice per calcolare le intersezioni di linea, allora qui è:
// Finds the intersection of two lines, or returns false.
// The lines are defined by (o1, p1) and (o2, p2).
bool intersection(Point2f o1, Point2f p1, Point2f o2, Point2f p2,
Point2f &r)
{
Point2f x = o2 - o1;
Point2f d1 = p1 - o1;
Point2f d2 = p2 - o2;
float cross = d1.x*d2.y - d1.y*d2.x;
if (abs(cross) < /*EPS*/1e-8)
return false;
double t1 = (x.x * d2.y - x.y * d2.x)/cross;
r = o1 + d1 * t1;
return true;
}
fonte
2011-09-16 17:23:02
Solo per chiarimenti. Le linee nel tuo esempio sono definite da due punti o come un vettore di direzione e di punto? – tisch
Sono definiti da due punti. 'd1' e' d2' calcolati all'interno della funzione sono vettori di direzione. –
Grazie alla funzione di aiuto! – tisch