• 大小: 6KB
    文件类型: .py
    金币: 2
    下载: 0 次
    发布日期: 2024-01-27
  • 语言: Python
  • 标签: OpenMV  例程  

资源简介

OpenMV识别交通灯例程,仅需根据环境修改交通灯红、绿、黄颜色阈值即可,思路清晰,识别率高。

资源截图

代码片段和文件信息

# Untitled - By: CZK - 周五 5月 10 2019


import sensor imagetimelcd pyb
from pyb import UARTTimerLED
#
red_threshold_01 = (60 88 23 63 6 -25)
green_threshold_01 = (85 98 -90 1 4 -63)
yellow_threshold_01 = (64 99 -23 18 14 66)
#


sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)#320*240
sensor.set_framesize(sensor.VGA)
sensor.set_windowing((240 240))


#sensor.snapshot().save(“/snapshot-%d.jpg“ % pyb.rng()) # Save Pic.

sensor.skip_frames()
sensor.set_auto_whitebal(False)      #关闭白平衡
sensor.set_auto_gain(False)          #关闭自动增益
clock = time.clock()
lcd.init()                           #Initialize the lcd screen.
uart = UART(31152008None1)       #创建串口对象

data = []

LED_Red = LED(1)
LED_Green = LED(2)
LED_Blue = LED(3)
BLUE_LED_PIN = 3

def expand_roi(roi):
    # set for QQVGA 160*120
    extra = 5
    win_size = (640 480)
    (x y width height) = roi
    new_roi = [x-extra y-extra width+2*extra height+2*extra]

    if new_roi[0] < 0:
        new_roi[0] = 0
    if new_roi[1] < 0:
        new_roi[1] = 0
    if new_roi[2] > win_size[0]:
        new_roi[2] = win_size[0]
    if new_roi[3] > win_size[1]:
        new_roi[3] = win_size[1]

    return tuple(new_roi)
sensor.skip_frames(time = 2000) # Give the user time to get ready.

tim = Timer(4freq=1)              # create a timer object using timer 4
#tim.callback(tick)
tim.deinit()




while(True):
    img = sensor.snapshot()
    clock.tick() # Track elapsed milliseconds between snapshots().
    blobs_red = img.find_blobs([red_threshold_01] area_threshold=150)
    blobs_green = img.find_blobs([green_threshold_01] area_threshold=150)
    blobs_yellow = img.find_blobs([yellow_threshold_01] area_threshold=150)


    if blobs_yellow:
    #如果找到了目标颜色
        #print(blobs)
        #print(“黄灯“)
        numjtdy = numjtdy+1
        for blob in blobs_yellow:
        #迭代找到的目标颜色区域
            is_circle = False
            max_circle = None
            max_radius = -1

            new_roi = expand_roi(blob.rect())

            for c in img.find_circles(threshold = 2000 x_margin = 20 y_margin = 20 r_margin = 10 roi=new_roi):
                is_circle = True
                # img.draw_circle(c.x() c.y() c.r() color = (255 255 255))
                if c.r() > max_radius:
                    max_radius = c.r()
                    max_circle = c
            if is_circle:
                # 如果有对应颜色的圆形 标记外框
                # Draw a rect around the blob.
                img.draw_rectangle(new_roi) # rect
                img.draw_rectangle(blob.rect()) # rect
                #用矩形标记出目标颜色区域
                img.draw_cross(blob[5] blob[6]) # cx cy
      

评论

共有 条评论