Bootstrap

mv_zhao直线

# 线段检测例程
#
# 这个例子展示了如何在图像中查找线段。对于在图像中找到的每个线对象,
# 都会返回一个包含线条旋转的线对象。

# find_line_segments()找到有限长度的线(但是很慢)。
# Use find_line_segments()找到非无限的线(而且速度很快)。

enable_lens_corr = False # turn on for straighter lines...打开以获得更直的线条…

import sensor, image, time,math
sensor.reset()
sensor.set_pixformat(sensor.RGB565) # 灰度更快
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()
thresholds = (90, 100, -128, 127, -128, 127)

# 所有线段都有 `x1()`, `y1()`, `x2()`, and `y2()` 方法来获得他们的终点
# 一个 `line()` 方法来获得所有上述的四个元组值,可用于 `draw_line()`.

while(True):
    clock.tick()
#    img = sensor.snapshot()
    img = sensor.snapshot().binary([thresholds], invert=False, zero=True)
    Y=0
    if enable_lens_corr: img.lens_corr(1.8) # for 2.8mm lens...

    # `merge_distance`控制附近行的合并。 在0(默认),没有合并。
    # 在1处,任何距离另一条线一个像素点的线都被合并...等等,
    # 因为你增加了这个值。 您可能希望合并线段,因为线段检测会产生大量
    # 的线段结果。
    buffer_Ytheta=[]
    buffer_Ylength=[]
    # `max_theta_diff` 控制要合并的任何两线段之间的最大旋转差异量。
    # 默认设置允许15度。
    res_theta=0
    min_linelength=20
    Ynum=0 #直线的数量
    Y=0  #存放识别的直线列表
    max_lineLength=0
    max_linetheta=0
    max_linerho=0
    Ylength=0
    ly=0
    line_all=img.find_line_segments(roi=(5,15,130,60),merge_distance = 0, max_theta_diff = 5)
    for l in line_all:
        if l.length()>=min_linelength:
            img.draw_line(l.line(), color = (255, 0, 0))
            Y=l.theta()
            Ylength=l.length()
            buffer_Ytheta.append(Y)
            buffer_Ylength.append(Ylength)
            print("buffer_Ytheta len=",len(buffer_Ytheta))
            print("buffer_Ytheta data=",buffer_Ytheta)
            print("buffer_Ylength len=",len(buffer_Ylength))
            print("buffer_Ylength data=",buffer_Ylength)
            length_max_value = max(buffer_Ylength) # Finds the maximum value
            length_max_index = buffer_Ylength.index(length_max_value) # Finds the index of the maximum value
            print(length_max_value) # Output: 8
            print(length_max_index) # Output: 7
            res_theta =buffer_Ytheta[length_max_index]
            print("res_theta=",res_theta)
#            time.sleep_ms(100)


在这里插入图片描述

;