这个问题说明了一切,
我知道函数Line()
,它在两点之间绘制线段。
我还需要使用线段的两个点来绘制线,而不是线。
[ZH:根据先前发布的问题答案进行编辑]
我使用了您的解决方案,它在水平线上的效果很好,但是在垂直线上仍然有问题。
例如,在下面的示例中,在具有600x600像素的图像上使用点[306,411]和[304,8](紫色)和绘制线(红色)。你有小费吗?
最佳答案
您将需要编写一个函数自己完成此操作。建议您将线条以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/