weixin_45803969
晚上不刷牙
采纳率0%
2020-04-06 20:46

霍夫直线会把一条直线的上下边缘编程两条直线,如果只是想要一条直线而且长度和原图像一样,有什么方法吗?

10
已结题

霍夫直线会把一条直线的上下边缘编程两条直线,如果只是想要一条直线而且长度和原图像一样,有什么方法吗?

霍夫直线会出现两条线而且无线延长,怎么让他长度变短,并且变一条?

  • 点赞
  • 收藏
  • 复制链接分享

9条回答

  • qq_42604176 拾牙慧者 1年前

    你也可以试着先对原图像进行腐蚀处理,将粗线条变细。这样效果会好点

    点赞 评论 复制链接分享
  • qq_42604176 拾牙慧者 1年前


    这是r的推导公式,你可以试试提高精度看看是否有效,我没有试过。

    点赞 评论 复制链接分享
  • weixin_45803969 晚上不刷牙 1年前

    r是像素吧,最小等于1,不能设成0.1的吧

    点赞 评论 复制链接分享
  • weixin_45803969 晚上不刷牙 1年前

    大哥,没看到你的回复啊

    点赞 评论 复制链接分享
  • qq_42604176 拾牙慧者 1年前

    提高极坐标空间的坐标精度,例如原本以r=1,theta=1°为步进,现在可以以r=0.1,theta=0.1.相当于把空间分割得更密了

    点赞 评论 复制链接分享
  • Canvaskan Canvaskan 1年前


    那样的话,在转换空间之后,选择曲线交点的时候设置一个判断条件:

    如果 选取了一点

    则 附近的半径为 r 以内的点不再选取


    或者更好一些的解决办法我猜想是:

    如果 n 个点之间的间隔小于 ε

    则将 n 个点的坐标取平均,得到一个点

    点赞 评论 复制链接分享
  • weixin_45803969 晚上不刷牙 1年前

    不是这个意思,这个都能做,霍夫直线会把一条直线检测出两条直线,我只想要一条怎么做?HoughLinesP用不了~直线都检测不全

    点赞 评论 复制链接分享
  • Canvaskan Canvaskan 1年前

    以及官网推荐使用cv2.HoughLinesP()


    > Best thing is that, it directly returns the two endpoints of lines. In previous case, you got only the parameters of

    > lines, and you had to find all the points. Here, everything is direct and simple.


    import cv2
    import numpy as np
    
    img = cv2.imread('dave.jpg')
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    edges = cv2.Canny(gray,50,150,apertureSize = 3)
    minLineLength = 100
    maxLineGap = 10
    lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
    for x1,y1,x2,y2 in lines[0]:
        cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)
    
    cv2.imwrite('houghlines5.jpg',img)
    



    https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html

    点赞 评论 复制链接分享
  • Canvaskan Canvaskan 1年前

    请问题主是调用的OpenCV还是自己写的转换?如果是调用的OpenCV,有一个maxLineGap参数:同一方向上两条线段判定为一条线段的最大允许间隔(断裂),超过了设定值,则把两条线段当成一条线段,值越大,允许线段上的断裂越大,越有可能检出潜在的直线段

    https://blog.csdn.net/dcrmg/article/details/78880046

    点赞 评论 复制链接分享