• 大小: 6KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2023-12-27
  • 语言: Python
  • 标签: openmv  

资源简介

用于openmv对颜色进行识别,并且可以把识别物体的坐标发送给单片机处理。

资源截图

代码片段和文件信息

# Blob Detection Example
#
# This example shows off how to use the find_blobs function to find color
# blobs in the image. This example in particular looks for dark green objects.

import sensor image time

from pyb import Pin

from pyb import UART

import struct


# 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   = (   0   80  -70   -10   -0   30)
#green_threshold   = (   70   100  -40   -20   15   35)
green_threshold   = (   60   100  -75   -20   20   40)
#设置绿色的阈值,括号里面的数值分别是L A B 的最大值和最小值(minL maxL minA
# maxA minB maxB),LAB的值在图像左侧三个坐标图中选取。如果是灰度图,则只需
#设置(min max)两个数字即可。
#red_threshold = ( 15 50 40 80 20 60)
red_threshold = ( 45 70 40 80 20 60)
#设置红色阈值
yellow_threshold   = (   65   100  -30   10   20   80)
blue_threshold   = (   25  75  -10   40   -70   -40)
#black_threshold   = (   10  20  -10   10   0   10)
black_threshold   = (   5  25  -15   0   -5   15)

# 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.

uart = UART(3 115200)

time.sleep(100)



while(True):
    clock.tick() # Track elapsed milliseconds between snapshots().
    img = sensor.snapshot() # Take a picture and return the image.

    green_blobs = img.find_blobs([green_threshold])
    #find_blobs(thresholds invert=False roi=Auto)thresholds为颜色阈值,是一个元组,需要用括号[ ]括起来。invert=1反转颜色阈值,invert=False默认不反转。roi设置颜色识别的视野区域,roi是一个元组, roi = (x y w h),代表从左上顶点(xy)开始的宽为w高为h的矩形区域,roi不设置的话默认为整个图像视野。这个函数返回一个列表,[0]代表识别到的目标颜色区域左上顶点的x坐标,[1]代表左上顶点y坐标,[2]代表目标区域的宽,[3]代表目标区域的高,[4]代表目标区域像素点的个数,[5]代表目标区域的中心点x坐标,[6]代表目标区域中心点y坐标,[7]代表目标颜色区域的旋转角度(是弧度值,浮点型,列表其他元素是整型),[8]代表与此目标区域交叉的目标个数,[9]代表颜色的编号(它可以用来分辨这个区域是用哪个颜色阈值threshold识别出来的)。
    if green_blobs:
    #如果找到了目标颜色
        for b in green_blobs:
        #迭代找到的目标颜色区域
            # Draw a rect around the blob.
            img.draw_rectangle(b[0:4]color=(02550)) # rect
            #用绿色矩形标记出目标颜色区域
            img.draw_cross(b[5] b[6]) # cx cy
        

评论

共有 条评论