# 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))
杂项——OPENMV识别红绿灯
最新推荐文章于 2024-09-30 11:07:43 发布