1. 快速入门

OpenMV Cam

欢迎——我们很高兴向你介绍 OpenMV Cam,这是一款小巧、可编程的摄像头,能够直接在设备上运行 Python。写几行代码,按下运行,摄像头就开始“看”了:检测人脸、追踪颜色、读取标记、跟随线条——无需 PC 参与其中,也无需先费力完成繁重的初始设置。

这份快速入门指南会让你在几分钟内上手运行:你将安装 IDE、连接你的摄像头,并把一个实时人脸检测器作为你的第一个脚本运行起来。

1.1. 安装 OpenMV IDE

OpenMV IDE 是用于编写脚本、在摄像头上运行脚本并实时观察结果的桌面应用程序。可在此处下载适用于 Windows、macOS 或 Linux 的版本,然后安装:

  • Windows —— 运行安装程序。它会连同摄像头的 USB 驱动一起安装 IDE;按照默认提示操作即可。

  • macOS —— 打开 .dmg 文件,将 OpenMV IDE 拖到应用程序文件夹中。

  • Linux —— 运行 chmod +x openmv-ide-*.run && ./openmv-ide-*.run,然后按照安装程序的提示操作。

备注

对于自动化或无界面的部署,安装程序也可以通过命令行配合静默安装标志运行。各平台的具体命令请参阅 openmv-ide README

1.2. 连接你的摄像头

用一根 USB 数据线把摄像头插到你的计算机上。等待它的驱动器挂载、蓝色 LED 开始闪烁,然后点击连接按钮——即工具栏底部的插头图标。

首次连接时,IDE 会将摄像头的固件与它自带的版本进行比较,并提示你更新。接受提示以刷写最新固件;这只需几秒钟,完成后 IDE 会自行重新连接。

如果摄像头没有出现,或者你想了解连接和更新的具体细节,请参阅 连接摄像头固件更新与恢复

备注

卡在某处了?在 OpenMV 论坛 上发帖——社区和 OpenMV 团队都很乐意提供帮助。

1.3. 运行你的第一个脚本

你的 OpenMV Cam 在闪存中预装了 Google 的 MediaPipe BlazeFace 人脸检测器。将下面这个脚本粘贴到编辑器中:

import csi
import time
import ml
from ml.postprocessing.mediapipe import BlazeFace

# Set up the camera sensor.
csi0 = csi.CSI()
csi0.reset()                # Initialize the sensor to a known state.
csi0.pixformat(csi.RGB565)  # Capture 16-bit colour.
csi0.framesize(csi.QVGA)    # Set a small, fast frame size.

# BlazeFace was trained on square images, so crop to a centred
# square the size of the sensor's height.
side = csi0.height()
csi0.window((side, side))

# Load the built-in face detector. The post-processor turns the
# network's raw output into a list of detections; threshold sets how
# confident a detection must be to count.
model = ml.Model("/rom/blazeface_front_128.tflite",
                 postprocess=BlazeFace(threshold=0.4))

clock = time.clock()        # For measuring the frame rate.
while True:
    clock.tick()
    img = csi0.snapshot()   # Capture one frame.

    # predict() runs the network and returns one
    # ((x, y, w, h), score, keypoints) tuple per detected face.
    for rect, score, keypoints in model.predict([img]):
        # Draw the box around the face...
        ml.utils.draw_predictions(img, [rect], ("face",),
                                  ((0, 0, 255),), format=None)
        # ...and mark the six landmarks: eyes, nose, mouth, ears.
        ml.utils.draw_keypoints(img, keypoints, color=(255, 0, 0))

    print(clock.fps(), "fps")

按下绿色的 Run 按钮,并将摄像头对准一张人脸。帧缓冲区查看器会在每张人脸周围绘制一个方框,并标出眼睛、鼻子、嘴巴和耳朵,同时串行终端会打印帧率。

这个脚本——以及几乎涵盖摄像头每一项功能的脚本——也内置在 IDE 的 File → Examples 中,并已按你所连接的开发板进行过滤。打开其中一个,按下运行,开始探索摄像头能做什么吧。

1.4. 下一步去哪里

从哪里切入取决于你已经掌握了什么。本教程有三个起点——Python 新手、硬件新手,或已准备好进入机器视觉——选择适合你的那一个。各类参考资料和 IDE 指南随时供你查阅。