tôi đã sử dụng một chiến lược tương tự như Karpathy ra ở đó nhưng sử dụng một chức năng phụ. Như bạn có thể thấy, tôi đang sử dụng cvClipLine để cắt đường thẳng thành kích thước của hình ảnh, điều này là không cần thiết nhưng lại thêm một chút độc đáo.
Ngoài ra hệ số ở đây được định nghĩa làMult = max (img-> height, img-> width) vì vậy chúng tôi không nhận được số có thể tràn vào một ngày hoặc một thứ gì đó.
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);
}