ho usato una strategia simile a Karpathy lassù, ma usato una funzione extra. Come puoi vedere, sto usando cvClipLine per tagliare la linea alla dimensione dell'immagine, che non è necessaria ma aggiunge un po 'di cordialità.
Anche il moltiplicatore qui è definito come il valore = max (img-> altezza, img-> larghezza) in modo da non ottenere numeri che potrebbero un giorno traboccare o qualcosa del genere.
void drawLine(IplImage * img, float line[4], int thickness,CvScalar color)
{
double theMult = max(img->height,img->width);
// calculate start point
CvPoint startPoint;
startPoint.x = line[2]- theMult*line[0];// x0
startPoint.y = line[3] - theMult*line[1];// y0
// calculate end point
CvPoint endPoint;
endPoint.x = line[2]+ theMult*line[0];//x[1]
endPoint.y = line[3] + theMult*line[1];//y[1]
// draw overlay of bottom lines on image
cvClipLine(cvGetSize(img), &startPoint, &endPoint);
cvLine(img, startPoint, endPoint, color, thickness, 8, 0);
}