opencv - 如何画线而不是线段OpenCV 2.4.2

标签 opencv

好吧,这个问题说明了一切,

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

我需要画线不是线段,也使用线段的两个点。


[EN:根据之前作为问题答案发布的内容进行编辑]

我使用了您的解决方案,它在水平线方面表现良好,但在垂直线方面仍然存在问题。

例如,下面是一个在 600x600 像素的图像上使用点 [306,411] 和 [304,8](紫色)以及绘制线(红色)的示例。你有什么建议吗?

enter image description here

最佳答案

我看到这是一个相当古老的问题。我有完全相同的问题,我使用了这个简单的代码:

double Slope(int x0, int y0, int x1, int y1){
     return (double)(y1-y0)/(x1-x0);
}

void fullLine(cv::Mat *img, cv::Point a, cv::Point b, cv::Scalar color){
     double slope = Slope(a.x, a.y, b.x, b.y);

     Point p(0,0), q(img->cols,img->rows);

     p.y = -(a.x - p.x) * slope + a.y;
     q.y = -(b.x - q.x) * slope + b.y;

     line(*img,p,q,color,1,8,0);
}

首先,我计算线段的斜率,然后将线段“延伸”到图像的边界中。我计算位于 x = 0 和 x = image.width 的直线的新点。点本身可以​​在Image之外,这是一种卑鄙的把戏,但解决办法很简单。

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

相关文章:

python - 霍夫圆检测: Blurring the image before calling hough circle algorithm?

c++ - 应用程序在 OpenCV 的 equalizeHist 上崩溃

python - 如何使用 OpenCV 检测与文档中的线条相交的复选框

opencv - 用 FFMPEG 将视频与标量相乘

image-processing - 多边形到 OpenCV 中的轮廓?例如cvApproxPoly() 的对立面?

c++ - OpenCV 3.4 相机校准产生奇怪的主点

c++ - 使用 OpenCV 和 OpenNI 测量两点之间的距离

python - 在h.264中以低延迟从Python中的opencv流rtsp视频

python - 使用 OpenCV Python 绘制多边形或自由形状

java - 将 RGB 转换为灰度