OPENMV——识别绿色小球并通过串口把信息发送到单片机,进而控制小车追小球

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
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),
        ]


# For color tracking to work really well you should ideally be in a very, very,
# very, controlled enviroment where the lighting is constant...
yellow_threshold   = (53, 25, -128, -13, -128, 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;
while(True):
    clock.tick() # Track elapsed milliseconds between snapshots().
    img = sensor.snapshot() # Take a picture and return the image.

    blobs = img.find_blobs([yellow_threshold])
    if len(blobs) == 1:
        # Draw a rect around the blob.
        b = blobs[0]
        img.draw_rectangle(b[0:4]) # rect
        img.draw_cross(b[5], b[6]) # cx, cy
        Lm = (b[2]+b[3])/2
        length = K/Lm       
        print(length)
    if length < 400:
        uart.writechar(0x41)                     #发送停止
        time.sleep_ms(50)
        
        
    else:
        if 52<b[5]<=108:
            uart.writechar(0x30)                     #发送前进
            time.sleep_ms(50)
            
            
        elif 32<b[5]<=52:
            uart.writechar(0x4C)                     #发送左转
            time.sleep_ms(50)
            
            
        elif 108<b[5]<=128:    
            uart.writechar(0x31)                     #发送右转
            time.sleep_ms(50)
        
        
        elif 0<b[5]<=32 :
            uart.writechar(0x4C)                     #发送迅速左转52
            time.sleep_ms(50)    
    
    
        elif 128<b[5]<=160 :
            uart.writechar(0x31)                     #发送迅速右转32
            time.sleep_ms(50)    
        else:
            uart.writechar(0x41)                     #发送停止
            time.sleep_ms(50)
            
  
    
    
    for rec in roi1:
        img.draw_line(rec, color=(255, 0, 0))
          

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值