Building Machine Vision Applications Using OpenMV

Machine vision is quickly finding its way into a wide variety of applications. Developers don’t need to be experts in machine learning or machine vision in order to get started.

Jacob Beningo

November 9, 2020

3 Min Read
web-new-cam-v2-angle_grande.openmv.io_.jpg
OpenMV.io

Visual awareness is an indispensable sense to human beings, and it is becoming indispensable to smart machines as well. Machine vision is finding its way into a myriad of applications such as smart doorbells, robotics, drones, and many other applications. The problem with machine vision though is that it can be complicated and seem to require specialized knowledge to get an application up and running.

According to the OpenMV website, the OpenMV project is about creating low-cost, extensible, Python powered, machine vision modules and aims at becoming the “Arduino of Machine Vision”. There are five components to the OpenMV that make it interesting to developers interested in getting started with machine vision.

First, all development is done in a custom IDE that is also used to deploy the machine vision scripts to a camera module. The IDE provides a mechanism for developers to update their scripts, update the onboard firmware, and explore numerous examples on how to perform specific functions. There are examples on how to use machine learning for image classification, color and blog tracking, eye tracking, shape detection, and much more. These example snippets can help a developer get up and running very quickly.

A screenshot of a computer screenDescription automatically generated

Image Source: openmv.io

Related:Springs for Fighting COVID-19 and Easy Machine Vision

Second, application development is scripted using Python. Python makes it easy for developers to quickly develop applications and abstract out the low-level hardware. In fact, the OpenMV Cams run MicroPython on a powerful STMicroelectronics STM32H7 processor. Developers are able to leverage the OpenMV examples along with the entire MicroPython ecosystem. The use of Python can dramatically decrease the learning curve and simplify application development, not to mention the opportunity to leverage a wide range of existing libraries and code.

Third, the combination of the STM32 microcontroller and MicroPython provides an expandable I/O interface. The module contains ten expandable I/O which provide developers with the ability to interact with sensors and modules over SPI, I2C, UART, and ADC. The module also has I/O for PWM, DAC, CAN, and GPIO. One of my favorite features is an onboard RGB LED but also IR LEDs which can come in handy for capturing images at night.

Fourth, the I/O interfacing for expandability can also be leveraged to connect expansion boards. Applications can be rapidly prototyped by building a custom add-on module or leveraging existing modules. At the moment there are off-the-shelf modules for:

  • LCD

  • Wi-Fi

  • Servo

  • Pan and Tilt

  • Motor control

The expansion modules leverage an Arduino-like connector that allows the modules to be stacked on top of each other to build up a hardware stack for prototyping and application development.

Finally, each module does come with a built-in camera module, but that camera module can be expanded for several different applications. For example, the onboard camera can be removed, and an adapter put in place to connect to a Flir IR camera for IR applications. The actual lenses themselves on the camera can even be removed and replaced. The default lens cover includes an IR filter which isn’t helpful if you want to capture IR light. There is an alternative lens that removes this filter so that IR light can be received. There are even telephoto and wide-field lenses that can be used to tailor the camera to the specific application.  

Jacob Beningo is an embedded software consultant who currently works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost, and time to market. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees which include a Master of Engineering from the University of Michigan. Feel free to contact him at [email protected], at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter.

About the Author(s)

Jacob Beningo

Jacob Beningo is an embedded software consultant who currently works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost and time to market. He has published more than 300 articles on embedded software development techniques, has published several books, is a sought-after speaker and technical trainer and holds three degrees which include a Masters of Engineering from the University of Michigan.

Sign up for the Design News Daily newsletter.

You May Also Like