# Single Color Code Tracking Example # # This example shows off single color code tracking using the CanMV Cam. # # A color code is a blob composed of two or more colors. The example below will # only track colored objects which have both the colors below in them. import sensor, image, time, math # Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max) # The below thresholds track in general red/green things. You may wish to tune them... thresholds = [(30, 100, 15, 127, 15, 127), # generic_red_thresholds -> index is 0 so code == (1 << 0) (30, 100, -64, -8, -32, 32)] # generic_green_thresholds -> index is 1 so code == (1 << 1) # Codes are or'ed together when "merge=True" for "find_blobs". sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # must be turned off for color tracking sensor.set_auto_whitebal(False) # must be turned off for color tracking clock = time.clock() # Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are # returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the # camera resolution. "merge=True" must be set to merge overlapping color blobs for color codes. while(True): clock.tick() img = sensor.snapshot() for blob in img.find_blobs(thresholds, pixels_threshold=100, area_threshold=100, merge=True): if blob.code() == 3: # r/g code == (1 << 1) | (1 << 0) # These values depend on the blob not being circular - otherwise they will be shaky. # if blob.elongation() > 0.5: # img.draw_edges(blob.min_corners(), color=(255,0,0)) # img.draw_line(blob.major_axis_line(), color=(0,255,0)) # img.draw_line(blob.minor_axis_line(), color=(0,0,255)) # These values are stable all the time. img.draw_rectangle(blob.rect()) img.draw_cross(blob.cx(), blob.cy()) # Note - the blob rotation is unique to 0-180 only. img.draw_keypoints([(blob.cx(), blob.cy(), int(math.degrees(blob.rotation())))], size=20) print(clock.fps())
时间: 2024-04-09 15:31:51 浏览: 181
这段代码是一个单色码跟踪的示例,使用了CanMV Cam进行跟踪。它会跟踪具有下列颜色的物体:
1. 红色:亮度范围在30到100之间,A通道范围在15到127之间,B通道范围在15到127之间。
2. 绿色:亮度范围在30到100之间,A通道范围在-64到-8之间,B通道范围在-32到32之间。
代码中使用了图像传感器来捕获图像,并进行颜色跟踪。通过设置阈值来确定跟踪颜色的范围。然后,使用`find_blobs`函数找到符合阈值要求的颜色块,并绘制出来。最后,打印出每秒处理的帧数。
请注意,这段代码中的阈值是一些通用的阈值,你可能需要根据实际情况进行调整。
阅读全文