The OpenMV Cam is a compact, low-power microcontroller board that enables you to implement real-world machine vision applications with ease. You program the OpenMV Cam using high-level Python scripts (powered by the MicroPython operating system) rather than C/C++. This simplifies handling the complex outputs of machine vision algorithms and working with high-level data structures. However, you retain full control over your OpenMV Cam and its I/O pins in Python. You can readily trigger image and video capture in response to external events or execute machine vision algorithms to determine how to control your I/O pins.
The OpenMV Cam features:
- STM32H743IIARM Cortex-M7 processor operating at 480 MHz with 32 MB of SDRAM, 1 MB of SRAM, 32 MB of external flash memory, and 2 MB of internal flash memory. All I/O pins output 3.3 V and are 5 V tolerant. The processor has the following I/O interfaces:
- A full-speed USB (12 Mbps) interface to your computer. Your OpenMV Cam will appear as a virtual COM port and a USB flash drive when connected.
- A microSD card socket capable of 100 Mbps reads and writes, enabling your OpenMV Cam to capture images and easily retrieve machine vision assets from the microSD card.
- An SPI bus capable of operating at up to 80 Mbps, enabling straightforward streaming of image data from the system to either the LCD Shield, the WiFi Shield, or another microcontroller.
- An I²C bus (up to 1 Mb/s), a CAN bus (up to 1 Mb/s), and an asynchronous serial bus (TX/RX, up to 7.5 Mb/s) for interfacing with other microcontrollers and sensors.
- A 12-bit analogue-to-digital converter and a 12-bit digital-to-analogue converter.
- Two 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 850 nm IR LEDs.
- 32 MB of external 32-bit SDRAM clocked at 100 MHz, providing 400 MB/s of bandwidth.
- 32 MB of external QuadSPI flash clocked at 100 MHz in 4-bit DDR mode, providing 100 MB/s of bandwidth (read speed).
- A removable camera module system, supporting 8-bit parallel interfacing, enabling the OpenMV Cam H7 to connect with various sensors:
- The OpenMV Cam H7 Plus comes with aOV5640The image sensor is capable of capturing 2592 × 1944 (5 MP) images. Most simple algorithms will run at between 25 and 50 FPS at QVGA (320 × 240) resolution and below. The image sensor is supplied with a 2.8 mm lens on a standard M12 lens mount. If you wish to use more specialised lenses with your image sensor, you can easily purchase and attach them yourself.
- For professional machine vision applications, you can purchase ourGlobal shutter camera module MT9V034.
- For infrared thermal imaging machine vision applications, you can purchase ourFLIR Lepton thermal imaging module.
- 3.7 V lithium-ion battery interface; you can purchase our3.7 V, 1000 mAh lithium-ion battery
Documentation:https://singtown.com/openmv/
Applications
Currently, the OpenMV camera is capable of the following (with further functionality to follow):
- Neural Network Object Detection
- You can use OpenMV to train neural networks for object detection, enabling the training of any target you wish to detect. For example, different numerals, various fruits, distinct markers, separate components, or any specific irregular targets can be trained to identify the number, coordinates, and object type name of those targets.
- You can detect traffic signs on real roads using our video tutorials, such as ‘No Horn’, ‘No Parking’, and ‘Speed Limit 80’, etc./learn/50918
- Neural Network Classification
- You can use OpenMV to train neural networks for object detection, enabling the training of any target you wish to detect. For example, different numerals, various fruits, distinct markers, different components, or any specific irregular targets can be trained to identify the number, coordinates, and object type name of specific targets.
- It can classify whether a person is wearing a mask, based on our video tutorial./learn/50872
- TensorFlow Lite for Microcontrollers
- TensorFlow Lite support enables you to run custom image classification and segmentation models on the OpenMV Cam. With TensorFlow Lite, you can readily classify complex regions in an image and control the 1/0 pins according to what is detected.
- Frame Differencing
- You can use the frame differencing algorithm on your OpenMV Cam to detect motion in a scene. Frame differencing enables your OpenMV to be used for security applications.
- Colour Tracking
- You can use OpenMV to detect up to 16 colours simultaneously in an image (although you will never need to detect more than four colours), and each colour can have any number of distinct blobs. OpenMV will report the location, size, centroid, and orientation of each blob. Using colour tracking, your OpenMV Cam can be programmed to track the Sun, follow lines, track targets, and more. Video demonstration:/learn/49993
- Marker Tracking
- You can use your OpenMV Cam to detect groups of colours rather than individual colours. This enables you to place colour tags (two or more colour labels) on objects, and OpenMV will retrieve the content of the tagged objects.
- Face Detection
- You can use your OpenMV Cam to detect faces—or any generic object. Your OpenMV camera can process Haar templates for generic object detection and includes built-in frontal face and eye Haar templates for detecting faces and eyes./learn/50013
- Eye Tracking
- You can use eye tracking to detect the direction in which a person is looking. You can use this capability to control robots. Eye tracking detects pupil position while also determining whether eyes are present in the image.
- Person Detection
- You can use the built-in person detector (TensorFlow Lite model) to detect whether there are people in view.
- Optical Flow
- You can use optical flow to detect motion in front of your OpenMV camera. For example, you can use optical flow on a quadcopter to control stability in flight.
- QR Code Detection and Decoding
- You can use your OpenMV Cam to read QR codes within its field of view. With QR code detection and decoding, you can enable intelligent robots to read labels in their environment.
- Data Matrix Detection and Decoding
- The OpenMV Cam can also detect and decode Data Matrix codes (two-dimensional barcodes). You can view our video here.
- Linear Barcode Decoding
- The OpenMV Cam can also process one-dimensional barcodes. It can decode EAN2, EAN5, EAN8, UPCE, ISBN10, UPCA, EAN13, ISBN13, I25, DATABAR, DATABAR_EXP, CODABAR, CODE39, CODE93, and CODE128. View our video here:/learn/50017
- AprilTag Tracking
- Even better than the QR codes above, the OpenMV Cam can also track AprilTags. AprilTags are state-of-the-art fiducial markers that are invariant to rotation, scale, shear, and illumination. View our video here:/learn/49590
- Line Detection
- The OpenMV Cam can rapidly perform infinite line detection while operating at nearly full frame rate. It can also detect non-infinite line segments. You can view our video here:/learn/50009
- Circle Detection
- You can easily use OpenMV to detect circles in images.
- Rectangle Detection
- OpenMV can also detect rectangles using the square detection code from the AprilTag library.
- Template Matching
- You can use OpenMV template matching to detect whether template-similar images are present in the field of view. For example, template matching can be used to locate markers on PCBs or to read known numerals on displays.
- Image Capture
- You can use OpenMV to capture RGB565 or grayscale BMP, JPG, PPM, and PGM images. You can directly control image capture in Python scripts. Most importantly, you can use machine vision algorithms to draw lines and characters, and then save the results.
- Video recording
- You can use the OpenMV camera to record RGB565 or greyscale MJPEG videos or GIF images (or RAW videos). You can directly control how each video frame is recorded in Python scripts and have full control over when video recording starts and ends. Also, as with taking photographs, you can use machine vision algorithms to draw lines, draw characters, and then save.
Finally, all the above features can be combined with I/O pin control to work with your own custom applications for interacting with the real world.