The OpenMV camera is a compact, low-power, low-cost circuit board that helps you easily implement machine vision applications. You can use the high-level Python scripting language (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:
- STM32H743VI 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 speed, allowing your OpenMV camera to record video and extract machine vision materials from the SD card.
- An SPI bus with speeds up to 54Mbs, 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 to other controllers or sensors.
- A 12-bit ADC and a 12-bit DAC.
- Three I/O pins for servo control.
- All IO pins can be used for interrupts and PWM (board has 10 I/O pins).
- One RGB LED (tri-color), two high-brightness 850nm IR LEDs (infrared)
- Detachable camera module system, allowing OpenMV Cam H7 to connect with different sensor modules:
- The default MT9M114 sensor on OpenMV4 H7 can process 640×480 8-bit grayscale or 640×480 16-bit RGB565 color images at up to 40 FPS; resolutions below 320×240 can reach 80FPS. Most simple algorithms can run at 40~80FPS or higher. 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 for hobby robot applications.
For documentation, please visit: https://singtown.com/openmv/
Applications
Currently, the OpenMV camera can be used for the following (with more to come):
- Frame Differencing
- You can use the frame differencing algorithm on OpenMV Cam to detect motion in a scene. Frame differencing can 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 position, 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 OpenMV Cam to detect color groups rather than individual colors. This allows you to place color tags (labels with 2 or more colors) on objects, and OpenMV will capture the content of the tagged objects.
- Face Detection
- You can use OpenMV Cam to detect faces (or any generic objects). 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 of someone's gaze. You can use it 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 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 nearly full frame rate. It can also 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 the field of 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, you can 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 to start and stop video recording. Also, like taking pictures, you can use machine vision algorithms to draw lines, draw characters, and then save.
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.