以下为例子:随机生成圆形
# 绘制圆形
#
# 这个例子展示了如何使用OpenMV内置的画圆形功能。
# This example demonstrates how to use the built - in circle drawing function of OpenMV.
# 导入sensor模块,用于控制OpenMV的摄像头传感器
import sensor
# 导入time模块,用于处理时间相关操作,如计时和延时
import time
# 从random模块中导入randint函数,用于生成随机整数
from random import randint
# 重置摄像头传感器,使其恢复到初始状态,确保后续设置能正常生效
sensor.reset()
# 设置摄像头的像素格式为RGB565,该格式可提供彩色图像
# 也可将其设置为GRAYSCALE以获取灰度图像
sensor.set_pixformat(sensor.RGB565) # or GRAYSCALE...
# 设置摄像头的帧大小为QVGA,这是一种常见的分辨率
# 也可选择QQVGA等其他分辨率
sensor.set_framesize(sensor.QVGA) # or QQVGA...
# 让摄像头跳过前2000毫秒(即2秒)的图像帧
# 目的是让摄像头有足够时间适应光照等环境条件,使前面设置的参数生效
sensor.skip_frames(time=2000)
# 创建一个时钟对象,用于跟踪帧率(每秒处理的帧数)
clock = time.clock()
# 进入一个无限循环,持续进行图像采集和圆形绘制操作
while True:
# 更新时钟对象,记录当前帧的开始时间,用于计算帧率
clock.tick()
# 拍摄一张快照,获取当前摄像头的图像
img = sensor.snapshot()
# 循环10次,每次在图像上绘制一个圆形
for i in range(10):
# 生成圆形圆心的x坐标,范围在图像宽度的 - 一半到 1.5 倍宽度之间
x = randint(0, 2 * img.width()) - img.width() // 2
# 生成圆形圆心的y坐标,范围在图像高度的 - 一半到 1.5 倍高度之间
y = randint(0, 2 * img.height()) - img.height() // 2
# 生成圆形的半径,范围在0到图像宽高最大值的一半之间
radius = randint(0, max(img.height(), img.width()) // 2)
# 生成圆形颜色的红色分量,范围在128到255之间
r = randint(0, 127) + 128
# 生成圆形颜色的绿色分量,范围在128到255之间
g = randint(0, 127) + 128
# 生成圆形颜色的蓝色分量,范围在128到255之间
b = randint(0, 127) + 128
# 注释说明draw_circle方法的参数传递规则
# 如果第一个参数是一个标量,那么此方法期望接收x、y和radius作为单独的参数
# 否则,它期望接收一个包含(x, y, radius)的元组
# # If the first argument is a scaler then this method expects
# to see x, y, and radius. Otherwise, it expects a (x,y,radius) tuple.
# 在图像上绘制圆形
# x, y 是圆心的坐标
# radius 是圆形的半径
# color=(r, g, b) 指定圆形的颜色
# thickness=2 指定圆形线条的粗细
# fill=False 表示不填充圆形内部
img.draw_circle(x, y, radius, color=(r, g, b), thickness=2, fill=False)
# 打印当前的帧率,方便了解程序的运行性能
print(clock.fps())