Ich benutze eine ähnliche Strategie wie Karpathy dort aber verwendet, um eine zusätzliche Funktion. Wie Sie sehen können, benutze ich cvClipLine, um die Linie auf die Größe des Bildes zu schneiden, was unnötig ist, aber ein wenig mehr Nettigkeit ergibt.
Auch der Multiplikator ist hier definiert als theMult = max (img-> height, img-> width), so dass wir keine Zahlen bekommen, die eines Tages überlaufen könnten oder so.
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);
}