python画直线--2点法

文章目录


需求:在图像上将检测到的线段转换为过图像边界的直线

def myline(x1,x2,y1,y2,w,h):
    """
    线段的端点转换为图像的边界点
    :param x1: 已知线段的2个端点
    :param x2:
    :param y1:
    :param y2:
    :param w:  图像的宽和高
    :param h:
    :return:
    """
    if x1 == x2:           # 竖线的情况
        x3 = x1
        y3 = 0
        x4 = x1
        y4 = h
    else:
        k = int((y1-y2)/(x1-x2))
        b = int((x1*y2-x2*y1)/(x1-x2))
        if k == 0:         # 横线的情况
            x3 = 0
            y3 = y1
            x4 = w
            y4 = y1
        else:
            x3 = int(-b/k)
            y3 = 0              # (x3,y3)在图上边

            y4 = h
            x4 = int((h-b)/k)   # (x4,y4)在图下边

            if x4 > w:
                x4 = w
                y4 = int(k*w+b) # (x4,y4)在图右边

            elif x4 < 0:
                x4 = 0
                y4 = b          # (x4,y4)在图左边

    return (x3,y3),(x4,y4)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值