The OpenMV camera is a small, low-power, low-cost circuit board that helps you easily complete machine vision applications. You can use Python scripts (specifically MicroPython) instead of C/C++. Python's advanced data structures make it easy to handle complex outputs in machine vision algorithms. However, you still have complete control over OpenMV. You can easily use external terminals to trigger shooting or execute algorithms, and you can use algorithm results to control IO pins.
Features of OpenMV camera:
- STM32H743II ARM Cortex M7 processor, 480 MHz, 1MB RAM, 2 MB flash. All I/O pins output 3.3V and are 5V tolerant. This processor has the following IO interfaces:
- Full-speed USB (12Mbs) interface for computer connection. When you plug in the OpenMV camera, your computer will show a virtual COM port and a 'USB drive'.
- μSD card slot with 100Mbs read/write, allowing your OpenMV camera to record video and extract machine vision materials from the SD card.
- An SPI bus up to 100Mbs speed, allowing you to easily stream image data to LCD expansion boards, WiFi expansion boards, or other controllers.
- One I2C bus, CAN bus, and two asynchronous serial buses (TX/RX) for connecting other controllers or sensors.
- A 12-bit ADC and a 12-bit DAC.
- 2 I/O pins for servo control.
- All IO pins can be used for interrupts and PWM (10 I/O pins on board).
- One RGB LED (tri-color), two high-brightness 850nm IR LEDs (infrared)
- 32 MB external 32-bit SDRAM, 100 MHz clock, achieving 400 MB/s bandwidth.
- 32 MB external quadspi flash, 100 MHz clock, 4-bit DDR mode achieving 100 MB/s bandwidth.
- Detachable camera module system, allowing OpenMV Cam H7 Plus to connect with different sensor modules:
- OpenMV4 H7 Plus comes with default OV5640 sensor processing 2592×1944 (5MP) images. At QVGA (320×240) and lower resolutions, most simple algorithms can run at (25-50) FPS. Your OpenMV camera has a 2.8mm focal length lens on a standard M12 lens mount. If you want to use more specialized lenses, you can easily install them.
- For professional machine vision applications, you can purchase our global shutter camera module mt9V034.
- For infrared thermal imaging machine vision applications, you can purchase our FLIR Lepton thermal imaging module.
- 3.7V lithium-ion battery interface, you can purchase our 3.7V-1000MAH lithium-ion battery
Documentation: https://singtown.com/openmv/
Applications
Currently, the OpenMV camera can do the following (with more to come):
- Frame Differencing
- You can use the frame differencing algorithm on your OpenMV Cam to see motion in a scene. Frame differencing allows your OpenMV to be used for security applications.
- Color Tracking
- You can use OpenMV to detect up to 16 colors simultaneously in an image (though you'll never want to find more than 4 colors), and each color can have any number of different blobs. OpenMV will tell you the location, size, center, and orientation of each blob. Using color tracking, your OpenMV Cam can be programmed to track the sun, follow lines, track targets, and more. Video demo: /learn/49993
- Marker Tracking
- You can use your OpenMV Cam to detect groups of colors instead of individual colors. This allows you to place color tags (2 or more color labels) on objects and OpenMV will get 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 comes with 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 someone is looking. You can use this to control robots. Eye tracking detects pupil position while detecting if eyes are present in the image.
- Person Detection
- You can use the built-in person detector (TensorFlow Lite model) to detect if 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 the air.
- QR Code Detection/Decoding
- You can use your OpenMV Cam to read QR codes in its field of view. With QR code detection/decoding, you can enable smart robots to read labels in their environment.
- Data Matrix Detection/Decoding
- OpenMV Cam can also detect and decode Data Matrix codes (2D barcodes). You can view our video here.
- Linear Barcode Decoding
- OpenMV Cam can also process 1D barcodes. It can decode EAN2, EAN5, EAN8, UPCE, ISBN10, UPCA, EAN13, ISBN13, I25, DATABAR, DARABAR_EXP, CODABAR, CODE39, CODE93, and CODE128. View our video here: /learn/50017
- AprilTag Tracking
- Even better than QR codes above, OpenMV Cam can also track AprilTags. AprilTags are state-of-the-art fiducial markers that are rotation-invariant, scale-invariant, shear-invariant, and illumination-invariant. View our video here: /learn/49590
- Line Detection
- OpenMV Cam can quickly complete infinite line detection while running at almost full frame rate. Also, it can find non-infinite line segments. You can see 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 if there are template-similar images in view. For example, template matching can be used to find markers on PCBs or read known numbers on displays.
- Image Capture
- You can use OpenMV to capture RGB565/grayscale BMP/JPG/PPM/PGM images. You can directly control how to capture images in Python scripts. Most importantly, use machine vision algorithms to draw lines, draw characters, and then save.
- Video Recording
- You can use OpenMV camera to record RGB565/grayscale MJPEG videos or GIF images (or RAW videos). You can directly control how each video frame is recorded in Python scripts and have complete control over when video recording starts and ends. Also, like taking pictures, you can use machine vision algorithms to draw lines, draw characters, and then save.
- 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 easily classify complex areas in the frame and control I/O pins based on what you see.
Finally, all the above features can be mixed with IO pin control to work with your own custom applications to interact with the real world.