【问题标题】:How to extend a line segment in open cv using python如何使用python在open cv中扩展线段
【发布时间】:2015-01-25 14:55:38
【问题描述】:

我有一个线段的两个端点,我想延长线。 我通过这个网站找到了以下算法

          lengthAB = sqrt((a.x - b.x)^2 + (a.y - b.y)^2) 
          c.x = b.x + (b.x - a.x) / lengthAB * length;
          c.y = b.y + (b.y - a.y) / lengthAB * length;

但是我在我的程序上实现它时无法获得输出。我需要 int 值,但 cx 和 cy 是浮点数。

![ a(x,y)=(200,140) , b(x,y)=(232,146) ][1]

  import numpy as np
  import cv2
  import math
  img = np.zeros((500,500,3), np.uint8)
  lenab = math.sqrt((200-232)**2+(158-146)**2)
  length = 100
  cx = 232 + (232-200) / lenab*length
  cy = 146 + (146-158) / lenab*length
  cv2.line(img,(200,158),(cx,cy),(33,322,122),3)
  cv2.imshow('Tha',img)
  cv2.waitKey(0)
  cv2.destroyAllWindows()

我的 o/p 屏幕:

      Traceback (most recent call last):
File "E:/Nan/inclined_line.py", line 9, in <module>
cv2.line(img,(200,158),(cx,cy),(33,322,122),3)
TypeError: integer argument expected, got float

【问题讨论】:

    标签: python c++ algorithm python-2.7 opencv


    【解决方案1】:

    分配给“点”变量时转换为 int

    A=(100,100 )
    B=(200,200 )
    C=[200,200 ]
    lenAB = math.sqrt(math.pow(A[0] - B[0], 2.0) + math.pow(A[1] - B[1], 2.0))
    
    C[0] =int (B[0] + (B[0] - A[0]) / lenAB * 500)
    C[1] = int(B[1] + (B[1] - A[1]) / lenAB * 500)
    cv2.line(img,A,tuple(C),Colour_store.blue,1,1)
    

    或在您的代码中。元组转换我真的不记得这是否是#needed 但“如果它没有坏”

    import numpy as np
    import cv2
    import math
    img = np.zeros((500,500,3), np.uint8)
    lenab = math.sqrt((200-232)**2+(158-146)**2)
    length = 100
    
    C=[200,200 ]
    C[0] =int( 232 + (232-200) / lenab*length)
    C[1] = int(146 + (146-158) / lenab*length)
    cv2.line(img,(200,158),tuple(C),(33,322,122),3)
    cv2.imshow('Tha',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    【讨论】:

    • 你能发布你的解决方案的完整代码吗?只是为了避免猜测必须修改原始代码的位置。
    【解决方案2】:

    根据您的错误,您将浮点值传递给 cv2.line。像这样将浮点数转换为整数:

     cv2.line(img,(200,158),(int(math.floor(cx)),int(math.floor(cy))),(33,322,122),3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      相关资源
      最近更新 更多