这个问题说明了一切,

我知道函数Line(),它在两点之间绘制线段。

我还需要使用线段的两个点来绘制线,而不是线。

[ZH:根据先前发布的问题答案进行编辑]

我使用了您的解决方案,它在水平线上的效果很好,但是在垂直线上仍然有问题。

例如,在下面的示例中,在具有600x600像素的图像上使用点[306,411]和[304,8](紫色)和绘制线(红色)。你有小费吗?

opencv - 如何绘制线而不是线段OpenCV 2.4.2-LMLPHP

最佳答案

您将需要编写一个函数自己完成此操作。建议您将线条以ax + by + c = 0的形式放置,然后与图像的4个边缘相交。请记住,如果您有[a b c]形式的线,发现其与另一条线的交点只是两者的叉积。您图像的边缘将是

top_horizontal =    [0 1 0];
left_vertical   =   [1 0 0];
bottom_horizontal = [0 1 -image.rows];
right_vertical =    [1 0 -image.cols];

另外,如果您知道点之间的距离,则也可以沿每个方向沿直线选择很远的点,我认为传递给Line()的点不必在图像上。

关于opencv - 如何绘制线而不是线段OpenCV 2.4.2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13160722/

10-12 19:19