OpenMV Cam H7 - Machine Vision w/ MicroPython
The OpenMV Cam is a small, low power, microcontroller board which allows you to easily implement applications using machine vision in the real world. You program the OpenMV Cam in high-level Python scripts (courtesy of the MicroPython Operating System) instead of C/C++. This makes it easier to deal with the complex outputs of machine vision algorithms and working with high-level data structures. But, you still have total control over your OpenMV Cam and its I/O pins in Python. You can easily trigger taking pictures and video on external events or execute machine vision algorithms to figure out how to control your I/O pins.
Some possibly applications of the OpenMV Cam H7 include:
- Frame Differencing
- You can use Frame Differencing on your OpenMV Cam to detect motion in a scene by looking at what's changed. Frame Differencing allows you to use your OpenMV Cam for security applications.
- Colour Tracking
- You can use your OpenMV Cam to detect up to 16 colours at a time in an image (realistically you'd never want to find more than 4) and each colour can have any number of distinct blobs. Your OpenMV Cam will then tell you the position, size, centroid, and orientation of each blob. Using colour tracking your OpenMV Cam can be programmed to do things like tracking the sun, line following, target tracking, and much, much, more.
- Marker Tracking
- You can use your OpenMV Cam to detect groups of colours instead of independent colours. This allows you to create colour makers (2 or more colour tags) which can be put on objects allowing your OpenMV Cam to understand what the tagged objects are.
- Face Detection
- You can detect Faces with your OpenMV Cam (or any generic object). Your OpenMV Cam can process Haar Cascades to do generic object detection and comes with a built-in Frontal Face Cascade and Eye Haar Cascade to detect faces and eyes.
- Eye Tracking
- You can use Eye Tracking with your OpenMV Cam to detect someone's gaze. You can then, for example, use that to control a robot. Eye Tracking detects where the pupil is looking versus detecting if there's an eye in the image.
Other applications include:
- Optical Flow
- QR Code Detection / Decoding
- Data Matrix Detection / Decoding
- Linear Barcode Decoding
- AprilTag Detection
- Circle Detection
- Rectangle Detection
- Template Matching
- Image Capture
- Video Recording
- An STM32H743VI ARM Cortex M7 processor running at 400 MHz with 1MB of RAM and 2 MB of flash. All I/O pins output 3.3V and are 5V tolerant. The processor has the following 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 off 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.
- A removable camera module system allowing the OpenMV Cam H7 to interface with different sensors:
- The OpenMV Cam H7 comes with an OV7725 image sensor is capable of taking 640x480 8-bit Grayscale images or 640x480 16-bit RGB565 images at 60 FPS when the resolution is above 320x240 and 120 FPS when it is below. Most simple algorithms will run at above 60 FPS. Your image sensor comes with a 2.8mm lens on a standard M12 lens mount. If you want to use more specialized lenses with your image sensor you can easily swap and attach these.
- A LiPo battery connector is compatible with 3.7V LiPo batteries.