跳到主要内容

Hello world

OpenMV H7 Plus
import csi
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # 等待画面稳定
csi0.auto_gain(False) # 固定增益,减少颜色变化
csi0.auto_whitebal(False) # 固定白平衡

# LAB 阈值:L 下限、L 上限、A 下限、A 上限、B 下限、B 上限
# 以下仅为起始值,请在现场光照下重新调整
thresholds = [
(30, 100, 15, 127, 15, 127), # 红色
(30, 100, -64, -8, -32, 32), # 绿色
]
clock = time.clock()

while True:
clock.tick()
img = csi0.snapshot()
for blob in img.find_blobs(thresholds, pixels_threshold=200):
img.draw_rectangle(blob.rect, color=(255, 0, 0))
img.draw_cross((blob.cx, blob.cy)) # 标出色块中心
print(clock.fps(), "fps")

找到指定颜色的色块

按 LAB 阈值寻找红色、绿色区域,用矩形标出色块,用十字标出中心。

  • 每组阈值依次是 L 最小值、L 最大值、A 最小值、A 最大值、B 最小值、B 最大值,不是 RGB 数值。
  • 示例中的两组数值只是调试起点。保持现场光照,在 IDE 的阈值编辑器中选取目标颜色,再替换对应数值。
  • pixels_threshold=200 会过滤匹配像素少于 200 的色块。改得更小能保留小目标,也容易把噪声留下。

动手前看一眼

先等画面稳定,再关闭自动增益和白平衡。换环境后重新调阈值;仅凭颜色检测不能保证识别到的就是某个特定物体。

条形码 / 二维码生成

OpenMV H7 Plus

正在加载生成器…

ⓘ 矢量图(SVG)可无限放大不失真

ⓘ 数字、英文字母和常用英文符号;自动选择 A/B/C 编码。

原尺寸预览 ·