python求十字交点坐标

cv2.HoughLines

使用函数cv2.HoughLines(),返回(ρ,θ),ρ的单位是像素,θ是弧度,三轴矩阵。
输入参数:第一个参数是二值化图像,进行霍夫变换之前要进行二值化或者canny边缘检测。第二第三个参数代表ρ和θ的精度。第四个参数是阈值,只有当累加器中的值高于阈值时才被当成是直线。
ρ表示从原点到直线的垂直距离,θ表示直线的垂线与横轴顺时针方向的夹角
霍夫变换参考
在这里插入图片描述
说到弧度,我已经忘了弧度制的计算了,打扰了,特地查了一下。
1°=π/180 rad,1 rad = (180/π)°≈57.30°=57°18ˊ
(我这里设置的是大概角度偏差在五度以内的直线算作同一条直线)

我对于opencv定位十字交叉点(python)中的代码稍微做了一些调整,原文的代码有句pop(5),我没有看懂,如果线条多于五条,那么pop(5)是什么意思呢?不过,修改后的代码适应了我的图像,附上代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt

def cleanlines(lines):
    # 清除重复的线条
    for lineindex, line in enumerate(lines):
        if line[0]<0:
            lines[lineindex][0] = -line[0]  # rho
            lines[lineindex][1] = line[1]-np.pi  # theta
    newlines = lines
    l_lines = len(lines)
    i = 0
    while i < l_lines:
        flag = 0
        j = i+1
        while j < l_lines:
            flag = 0
            # rho和theta值比较相似或者在一定的范围内的线条归结为一条线(5度以内)
            if (abs(lines[i][1]-lines[j][1])<0.1):
                flag = 1
                lines.pop(j)
                l_lines -= 1
            #print('lines[i]={},lines[j]={},flag={}'.format(lines[i],lines[j],flag))
            j +=
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值