What is OpenMV Cam? The Arduino of Machine vision

OpenMV H7 Cam

Introducing the OpenMV Cam, a small, low-powered microcontroller board made for easy machine vision applications. Unlike Arduino or other microcontrollers, MicroPython OS is used instead of C/C+. This makes dealing with complex outputs of machine algorithms and working with high-level data structures simple!

It has two versions; the OpenMV Cam M7 (Older version) and OpenMV Cam H7. Here at Seeed, we provide both camera models, with the H7 now available for preorder!

OpenMV H7 Camera Overview

By far the easiest way I’ve found to learn and use advanced computer vision. This single board can do everything from driving a car to landing a drone.

Chris Anderson (CEO of 3DR)

What are the features that allow the OpenMV Cam H7 to achieve such high regard? Let’s take a look!

Hardware Overview:

OpenMV H7 Cam Features:

STM32H743VI ARM Cortex M7 processor with wide range of I/O Interfaces:

  • A full-speed USB (12Mbs) interface to your computer. Your OpenMV Cam will appear as a Virtual COM Port and a USB Flash Drive when plugged in
  • A μSD Card socket capable of 100Mbs reads/writes which allows your OpenMV Cam to record video and easy pull machine vision assets off of the μSD card
  • An SPI bus that can run up to 100Mbs allowing you to easily stream image data of the system to either the LCD Shield, the WiFi Shield, or another microcontroller
  • An I2C Bus, CAN Bus, and an Asynchronous Serial Bus (TX/RX) for interfacing with other microcontrollers and sensors
  • A 12-bit ADC and a 12-bit DAC.
  • Three I/O pins for servo control
  • Interrupts and PWM on all I/O pins (there are 10 I/O pins on the board)
  • And, an RGB LED and two high power 850nm IR LEDs

Removable camera module system, allowing for different sensor usages

  • The OpenMV Cam H7 comes with an OV7725 image sensor, able to run at above 60 FPS. It’s a 2.8mm lens on a standard M12 lens mount.
  • The removable lens allows you to easily buy and attach sensors that you would like to use!

Common battery usage

  • A LiPo battery connector is compatible with 3.7V LiPo batteries commonly sold online for hobbyist robotics applications.

Diving deeper, the Specifications:

Processor ARM®32-bit Cortex®-M7 CPU

w/ Double Precision FPU

480 MHz (1027 DMIPS)

Core Mark Score: 2400

(compare w/ Raspberry Pi Zero: 2340)
RAM layout Total RAM: 1MB

Comprised of:
256B of .DATA/.BSS/Heap/Stack
512KB Frame Buffer/Stack
256KB DMA Buffers
Flash Layout Total Flash: 2MB

Comprised of:
128KB Bootloader
128KB Embedded Flash Drive
1729KB Firmware
Supported Image Formats Grascale
JPEG (and BAYER)
RGB565
Maximum Supported Resolutions Grayscale: 640×480 and under
RGB365: 320×240 and under
Grayscale JPEG: 640×480 and under
RGB565 JPEG: 640×480 and under
Lens Info IR Cut Filter: 650nm (removable)

Sensor used: OV7725

Focal Length: 2.8mm
Aperture: F2.0
Format: 1/3″
HFOV = = 70.8°, VFOV = 55.6°
Mount: M12*0.5
Electrical Info All pins are 5V tolerant with 3.3V output, and can be sinked or source up to 25mA.
P6 is not 5V tolerant in ADC or DAC. Up to 120mA may be sinked and sourced in total between all pins.
VIN may be between 3.6V and 5V.
DO NOT draw more than 250mA from your OpenMV Cam’s 3.3V rail.
Dimensions 45mm x 36mm x 30mm (L x W x H)
Weight 19g

Removable lens? Yes, you can swap the image sensor out!

If the onboard lens is not up to your expectations, the OpenMV H7 now features removable camera modules, allowing for Flir Lepton and Global Shutter sensor usages!

Power Consumption:

Idle – No μSD Card 110mA @ 3.3V
Idle – μSD Card 110mA @ 3.3V
Active – No μSD Card 160mA @ 3.3V
Active – μSD Card 170Ma @ 3.3V

Temperature Range

Storage -40°C to 125°C
Operating -20°C to 70°C

Pinout

Software Overview:

OpenMV IDE

OpenMV IDE interface

OpenMV IDE allows for easy programming with your OpenMV Cam through Python. Coding in Python makes working with machine vision algorithms much easier!

  • Treat it like an Arduino IDE made for machine vision algorithms!

More on OpenMV IDE:

  • OpenMV IDE is a development environment that features a powerful text editor, debug terminal, and frame buffer viewer w/a histogram display. Built and design for OpenMV Cameras!
  • Compatible with Windows, OSX Snow Leopard, Ubuntu 12.04, Raspberry Pi

To download the latest version of OpenMV IDE, you can head here!

  • Head here for more information on the OpenMV IDE and its tutorial

OpenMV H7 Cam Key Applications, What can it do?

Here are all the key applications for OpenMV cam, alongside video tutorials for more technical applications to help you get started!

Security applications through Frame Differencing

Used to detect motion in a scene by looking at what’s changed. Making it applicable for security applications on the OpenMV Cam!

Video Demo on Frame Differencing by OpenMV.io

Color Tracking

Detect up to 16 colors at a time with the OpenMV Cam! Each color can have any number of distinct blobs, telling you the position, size, centroid, and orientation of each blob afterward.

Color tracking can be programmed, enabling way more applications!

Video demo on Color Tracking by OpenMV.io

Marker Tracking

OpenMV Cam can be used to detect groups of colors, allowing you to create color markers to be placed on objects. Tagged objects can then be understood through your OpenMV Cam.

Video Demo on Marker Tracking by OpenIV.io

Face Detection

Faces or any generic object can be detected with the OpenMV Cam. It does so with Haar Cascades and built-in Frontal Face Cascade/Eye Haar Cascade.

Video Demo on Face Detection by OpenMV.io

Eye Tracking

Want to detect someone’s gaze? The OpenMV Cam is capable of detecting that and using it to control a robot for example!

Optical Flow

Optical Flow is used to detect translation of what your OpenMV Cam is looking at. You can use it on a quad-copter to determine how stable it is in the air as an example!

Video Demo on Optical Flow by OpenMV.io

QR Code Detection/Decoding

Reading QR code is possible on the OpenMV Cam. This allows for smart robot projects!

Video Demo on QR detection by OpenMV.io

AprilTag Tracking

What’s better than QR code is AprilTag tracking!
AprilTags are rotation, scale, shear, and lighting invariant state-of-the-art fiducial markers. The OpenMV Cam H7 allows for 160×120 at up to about 12FPS.

Video Demo on AprilTag Tracking by OpenMV.io

Edge/Line Detection

OpenMV Cam can be used to easily detect the orientation of objects through edge detection. This can be done via either the Canny Edge Detector algorithm or simple high-pass filtering followed by thresholding.

Video demo on Edge/Line Detection by OpenMV.io

Template Matching

Template matching can be used with the OpenMV Cam to detect when a translated pre-saved image is in view. It can be used to find fiducials on a PCB or read known digits on a display

Image Capture

The OpenMV Cam can be used to capture BMP/JPG/PPM/PGM images. You have direct control over how images are captured in your Python script. What’s even better is that you can perform machine vision functions and/or draw on frames before saving them!

Video Recording

What’s a camera without video recording capabilities right? With the OpenMV cam, you can record MJPIEG video or GIF images. Similarly to image capturing, you have direct control in your Python script. Machine vision functions and/or draw on frames before saving can be done as well!

TensorFlow Lite for Microcontrollers Support

TensorFlow Lite support allows for custom image classification and segmentation models onboard your OpenMV Cam. With the TensorFlow Lite, you can easily classify complex regions of interest in view and control I/O pins based on what you see!

To summarise, here’s the full list of applications, with its respective video demos (for those not covered above):

But wait, there’s more!

These applications are what’s currently possible on the OpenMV H7 Cam. However, as update rolls on, there’ll be more you can play with in the future!

OpenMV H7 vs Open M7

The OpenMV H7 is an upgraded version of the M7, with major improvements in the following areas:

  • Higher processing frequency
  • Higher RAM
  • Now support BAYER imaging format
  • OV7725 Sensor that’s removable, with support for FLIR Lepton and Global Shutter
  • Way more applications; Data Matrix Detection, Linear Barcode Decoding, Rectangle, Circle detection, etc.

What’s even better, they are both priced the same!

OpenMV Cam Tutorial

To help you get started on the OpenMV Cam, here’s a quick tutorial!

Note: This tutorial can be used for both the OpenMV Cam M7 and OpenMV Cam H7. Before we get started, ensure you’re connected to the internet as well!

Step 1: Download OpenMV IDE for your operating system. When installing, accept all default options.

Step 2: Open the OpenMV IDE and connect M7/H7 to your computer. On the IDE, click the “Connect” button in the bottom-left corner to establish a connection with your OpenMV camera.

Step 3: Update firmware if needed. A pop-up asking you to update your device firmware will appear if it’s out of date.

  • You should see that the reported firmware has been updated to the recent version once the flashing process is completed. (a [latest] text should appear)

Step 4: Start testing. When you first open the OpenMV IDE, there should be some example code that appeared. Click the Play button located at the bottom left and you should see a live video playing from the camera!

You can find the in-depth tutorial for various devices and all about the OpenMV IDE here!

Resources and Going Further

Want to dive deeper into what the OpenMV H7 is all about? You can refer to the following resources:

Summary

Started off as a Kickstarter project, the OpenMV Cam is slowly making its mark in the market and deservingly so! It makes machine vision easy, suitable for makers and hobbyists to explore their creativity without having to worry!

Own an Arduino or not, it’s one not to miss for your next Machine vision project, grab an OpenMV H7 Camera today!

About Author

Calendar

December 2019
M T W T F S S
 1
2345678
9101112131415
16171819202122
23242526272829
3031