python - 有没有一种方法可以找到/检测两个像素的中间或opencv创建的两行?

标签 python opencv matplotlib image-processing image-recognition

我正在尝试创建一个车道检测系统,我需要找到opencv绘制的两条线的中间,如下所示:
Two Lines created by fillPoly() function

我需要找到这两条线的中间(或这两条线中的两个像素之一)以在这些中间创建点或另一条线,以便能够检测到换车道。
谢谢。

最佳答案

考虑到您有两条平行线L1(x1,y1)-(x2,y2)和L2(x3,y3)-(x4,y4),中线是这两个值的简单均值,就像Zabir在评论。

但是请注意画线的方法,如以下文档所示:

# Create a black image
img = np.zeros((512,512,3), np.uint8)
# Draw a diagonal blue line with thickness of 5 px
cv.line(img,(0,0),(511,511),(255,0,0),5)

这里的行是从点(0,0)到(511,511)的点,该点以元组格式传递,因此出现了错误消息

SystemError: new style getargs format but argument is not a tuple



因此,要解决此问题,您只需提供正确的方式即可,例如:
cv.line(img,(x1_middle, y1_middle),(x2_middle,y2_middle),(255,0,0),5)

Take a look here for drawing functions
  • 根据评论编辑

  • 由于我以为这是两条平行线而不是交点,因此问题再次出在数学上。如果您有两条线L1:y = 2x和L2:y = 20-2x,这两条线之间的交点是点,它们的x和y都相同,因此对于简单系统来说,只需求解即可:

    2x-y = 0

    2x + y = 20

    结果是x = 5,y = 10(绿线的基数)。

    Plot intersection

    关于python - 有没有一种方法可以找到/检测两个像素的中间或opencv创建的两行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61894249/

    相关文章:

    python - 使用 Popen 获取输出彩色文本

    python - wxpython 线程框架初始化错误

    python - 是否可以手动调用 tensorboard smooth 函数?

    Python:制作从红色到蓝色的颜色条

    python - 在数组中定义多个绘图对象并在 matplotlib 动画中更新

    python - 如何强制 matplotlib 将 x 轴上的值显示为整数

    python - 可以在没有显示的情况下使用 pyplot 吗?

    c++ - 更正 gtk、gtkmm 和 opencv 的 CMakeLists.txt 文件

    android - 在 Android 中使用 OpenCV 检测图像中的圆圈

    python - 带有 python 的 OpenCV VideoWriter 提供 5.54kb 文件