杂项——OPENMV识别红绿灯

# Measure the distance
#
# This example shows off how to measure the distance through the size in imgage
# This example in particular looks for yellow pingpong ball.

import sensor, image, time,lcd
from machine import UART
uart = UART(3, 115200)   #OpenMV RT 注释掉这一行,用下一行UART(1)


roi1 = [(32, 0, 32, 120),
        (52, 0, 52, 120),
        (108, 0, 108, 120),
        (128, 0, 128, 120),
        (0, 85, 160, 85),
        ]


# For color tracking to work really well you should ideally be in a very, very,
# very, controlled enviroment where the lighting is constant...
green_threshold   = (86, 100, 127, -66, 127, 11)

red_threshold =(74, 42, 127, 53, -39, 127)


# You may need to tweak the above settings for tracking green things...
# Select an area in the Framebuffer to copy the color settings.

sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # use RGB565.
sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
sensor.skip_frames(10) # Let new settings take affect.
sensor.set_auto_whitebal(False) # turn this off.
clock = time.clock() # Tracks FPS.

K=5000#the value should be measured
length=0;

lcd.init()

while(True):
    clock.tick() # Track elapsed milliseconds between snapshots().
    img = sensor.snapshot() # Take a picture and return the image.
    #lcd.display(img)
    blobs_green = img.find_blobs([green_threshold])
    blobs_red = img.find_blobs([red_threshold])
    if len(blobs_green) == 1:               #识别到绿色
        # Draw a rect around the blob.
        b = blobs_green[0]
        img.draw_rectangle(b[0:4]) # rect
        img.draw_cross(b[5], b[6]) # cx, cy
        lcd.display(img)
        
        uart.writechar(0x30)                     #发送前进
        time.sleep_ms(50)
       
   
    
   
    
    
    
    
    if len(blobs_red) == 1:             #识别到红色
                # Draw a rect around the blob.
        c = blobs_red[0]
        img.draw_rectangle(c[0:4]) # rect
        img.draw_cross(c[5], c[6]) # cx, cy  
        lcd.display(img)
    
        if 85<c[6]:
            uart.writechar(0x41)                     #发送停止          红灯停
            time.sleep_ms(50)
    
        else:
            uart.writechar(0x30)                     #发送前进
            time.sleep_ms(50)
    
    
    
    for rec in roi1:
        img.draw_line(rec, color=(255, 0, 0))
          

    

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值