This product has shipping restrictions, so it might have limited shipping options or cannot be shipped to the following countries:
Creative Commons images are CC BY 2.0
Description: The OpenMV M7 Camera is a small, low-power microcontroller board that allows you to easily implement applications using machine vision in the real world. The best part about the OpenMV is that it is not only capable of image capture, but also face detection, color tracking, QR code reading and plenty more. If you are looking for an economical camera module boasting multiple high-end features, look no further than the OpenMV M7!
The OpenMV can be programmed 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. You still have total control over your OpenMV M7 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.
Features:
Documents:
The FLiR Dev Kit includes a breakout as well as a Lepton® longwave infrared (LWIR) imager. With this kit you will be able to…
This 8mp camera module is capable of 1080p video and still images that connect directly to your Raspberry Pi. This is the plu…
Are you a super spy trying to spot ninja assassins in the dark? Or maybe you're just trying to figure out who's been sneaking…
This is a high-quality color CMOS camera module. Power the CM-32 module, hook up any display, monitor, or LCD screen with an …
Python is a powerful, expressive programming language that's easy to learn and fun to use! But books about learning to progra…
When Microsoft's Kinect hardware hit the DIY world, it sparked a lot of very awesome projects. The Kinect let's computers see…
This is the new Arduino Uno R3. In addition to all the features of the previous board, the Uno now uses an ATmega16U2 instead…
The CCS811 Air Quality Breakout is a digital gas sensor solution that senses a wide range of Total Volatile Organic Compounds…
The SparkFun Simultaneous RFID Reader is an Arduino-compatible board to get you started with the M6E Nano UHF RFID Reader. Ra…
You may be the greatest living banana-pianist, but how will you ever know if you don't make yourself a banana piano? Good new…
Measuring air quality includes the necessity to determine the amount of dust or particulate matter (PM) in the air. Dust is n…
The SparkFun micro:bit Breakout is a board that connects to the BBC micro:bit and expands the capabilities of the development…
The RHT03 (also known by DHT-22) is a low cost humidity and temperature sensor with a single wire digital interface. The sens…
It's blue! It's thin! It's the Arduino Pro Mini! SparkFun's minimal design approach to Arduino. This is a 5V Arduino running …
The Type 5 Pocket Geiger Radiation Sensor from [Radiation Watch](http://www.Radiation-Watch.org) is a highly sensitive radiat…
The SparkFun Inventor's Kit (SIK) is a great way to get started with programming and hardware interaction with the Arduino pr…
Everyone knows and loves Raspberry Pi, but what if you didn't need additional peripherals to make it wireless. The Raspberry …
The BBC micro:bit is a pocket-sized computer that lets you get creative with digital technology. Each order contains just the…
GPS modules are common these days but the Qwiic GPS is something extremely rare: this is a true I2C GPS+GLONASS module. The Q…
This is the SparkFun Solderable Breadboard. A bare PCB that is the exact size as our regular breadboard with the same connect…
Infrared proximity sensor made by Sharp. Part # GP2Y0A21YK has an analog output that varies from 3.1V at 10cm to 0.4V at 80cm…
Sure, your flashing, chip-tune playing T-shirt is really cool at the party... but at some point you need to turn it off. And …
Alligator clips (or Crocodile clips, if you prefer) are likely to be the most useful thing on your workbench besides the work…
Arduino is an open-source physical computing platform based on a simple i/o board and a development environment that implemen…
Based on 1 ratings:
by Member #535232 verified purchaser
Great product that delivers exactly on its intent at a really affordable price. This is a compact, complete machine vision system that works right out of the box. The example code in the IDE provides a variety of functional object recognition, and is easy to tweak into what you want.
Would love to see built-in text recognition, similar to the included QR, ARtag, and barcode readers.
Forgot your password?
No account? Register one!
The OpenMV can be programmed 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 I prefer C/C++. I have tons of existing C/C++ infrastructure that I can reuse. C/C++ runs faster because there’s no interpreter overhead.In addition, a decent compiler can optimize my code to run as fast as possible. I get to control memory allocations and my code can be deterministic hard real time. I can put indentations where I want them and curly braces let me know that I’ve changed scope. Best of all, I can find 90%+ of my errors at compile time, not run time.
Having Python-only control is a huge bug, not a feature, a terrible blemish on an otherwise interesting product. (Other than that, Mrs. Lincoln, how did you like the play?)
In defense of the M7, I humbly submit this reply… ><> Yes, your right in some aspects. I hear what your saying. However… The speed issue based on compiled versus interpretive isn’t an issue for a 216Mhz headless embedded micro. At least not with me. Forced indentation is ok with me. Eliminating the curlies just seems to clean up the code by getting rid of some noise. And it tends to help conformance issues resulting in common coding tactics. Compile time errors are syntax errors. Good coders like you and me don’t make a lot of them. So, no biggy here either in my view.
Now, I will say this. uPOS is not, in my view, an “Operating System”. It’s more of an “Operating Environment”. I like the Arduino world for the simple fact that there is no OS per see. You have Setup() and Loop(). Period. Perfect. The embedded micro does one thing and it does it very well. Just like micro-python where it runs main.py. Period. I have a pyBoard and am learning Python using the uPOS it provides. I am doing this while I wait for my uArm Swift Pro robotic arm to arrive which will be coming with an M7. I got in on the kickstarter which is shipping product now. I’m going to have the M7 talk to the pyBoard which will talk to the Arm to simulate an autonomous entity. The M7 will be its eye, a microphone for an ear, an Emic 2 for a voice, and a whole lotta code for enhanced interaction with the real world. And that’s where things get hairy with Python. Ok, 2 + 2 is a very simple “rvalue”. But when an rvalue contains Lists of mutables filtered by regular expressions used as part of a comprehension for generating a set of tuples, the glaze begins to form over your eyeballs. How did they put it, “This makes it easier to deal with the complex outputs of machine vision algorithms and working with high-level data structures.” Yeah, easy once you get the hang of it. And that’s what isn’t so easy. Which brings me to another point on the speed issue. When Python iterates through these data-structures, it’s using pointers, C++ pointers, and we all know how much faster things execute using pointers. So, again, speed isn’t an issue with me.
A huge bug, naaa, just a different way of doing things. Not a feature, no, of course not. It’s the way it is. A terrible blemish? Strange way to describe software. Not sure how to respond to that so I won’t.
In any case, the M7 is a very cool “sensor” for vision. And it’s only going to get better. As for uPOS, there is a lot of work going on in this area which will only further its appeal to the Maker World. One last thing. I do want to give SparkFun a kudos for providing this device. Even though they went for my primary source to my tertiary source and pretty much no longer use them to provide me with my parts, I do want them to know they made a good choice here.
Hi NorthernPike,
This is Kwabena (OpenMV President). I hear what you’re saying about Python types being complicated. It’s a different world from C. But, it’s easy to learn.
Note that by high level data structure manipulation I mean things this:
for blob in sorted(raw_blob_list, key = lambda x: x.area(), reverse = True)[0:max_blobs]
The above python line does a “for” loop on a list of color blob detections that have been sorted by the area of each color blob in descending order on the first “max_blobs” color blob detections. Note that each color blob detection is an object with about 10 fields. I could have sorted the detections based on something else other than area().
In python you’re able to do all of this in one line more or less. In C… well, life is harder. Doing good computer vision work often requires you to filter things, sort things, etc. Python is great for this.
For more info on the above… here’s a link to an OpenMV Cam script that emulates the CMUcam5 Pixy which the above line of code is from:
https://github.com/openmv/openmv/blob/master/usr/examples/17-Pixy-Emulation/pixy_uart_emulation.py
Hello Kye, Thank you for the reply. A comment from the President of the company is quite impressive and reinforces my confidence in your product.
Now, as far as the Python “types” being complicated isn’t what I was actually trying to get at. It’s the “use” of the types that gets interesting. Just look at your example for instance. You have a “List”, an iterator calling a method for use in comparison, and your “slicing” that list to use the first to max_blobs items. At least I think that’s what it appears to be doing. Again. it’s how these data types are used or “assembled” together to form a really cool yet complicated “rvalue'.
Now, put that line of code in front of a 12 or 13 year old and see what happens. That’s why I will not say Python is easy. I won’t lie to those trying to learn it. I’ve been coding since 1975 from Fortran written on punchcards and run on an IBM 360 to Machine code to Assembly language to Cobol, Pascal, Basic, Lisp, C and C with classes, er C++. It’s the “obfuscation” issue made so popular by C.
The fact that Python can allow one-line statements to be constructed with such power can be concerning when trying to promote the technology. Sometimes it’s better to have “easy-to-read” code then compact super-duper fast code. But, your example really isn’t clever or unique or even impressive. It’s pretty much standard stuff for Python. And that’s the crux of my point.
In any case, good luck with the M7. I look forward to receiving mine soon. And thanks again for the link to the code on GitHub.
PS - Shouldn’t there be a colon “:” at the end of your example statement above? :))
Hi Member #394180,
This is Kwabena (OpenMV President), you can actually program the OpenMV Cam in C. We have an open-source build system available here: https://github.com/openmv/openmv/wiki/Firmware-Development. No external expensive programmer tools are required. All you need is the OpenMV Cam and a USB cable.
The above said, our firmware is over 1 MB in size which takes a couple of minutes to program onto the STM32F7 chip. If you are developing code in C you need to be an excellent programmer who doesn’t make silly mistakes to get any work done. For beginner students and hobbyist… this isn’t the case. Having the python system on-board makes it really easy to get an application that uses computer vision in the real-world working quickly since you’re going to have to constantly tweak settings until everything works right. Being able to compile and run in under a second is HUGE.
Make one of these with an imager that has a global shutter, and I will love you forever!
Looks neat, and Im sure it has its uses.
Why would I get this instead of an RPI with a camera? I can get an RPI3+Camera+SD for 65, or an RPIZW+Camera+SD for 45. The RPIs can do some reasonable OpenCV stuff in both C++ or Python. Not great but not horrible either. (the Zero is pretty slow but just fine as a hi-def security camera sending pics to a server). I have both and they work for what im doing.
Hi bennard,
This is Kwabena (OpenMV President).
If you know what you’re doing with a Raspberry Pi and can sling computer vision code easily along with I/O pin control then there’s no need for the OpenMV Cam. But, if you aren’t a master you’re going to run into a step hill with OpenCV and then trying to get the output from your code to controlling stuff in the real world.
The whole point of the OpenMV Cam is to make things “easier” - in particular doing robotics. Note that we give you a nice IDE to program the system with that makes your development experience a lot nicer that using a Raspberry PI with OpenCV.
+1 on global shutter request, important for robotics, etc., where the platform may not be stable (moving). Image sensor is capable of 60 fps, might help if M7 can operate it at that speed rather than 30 fps.
Hi Member #658570 ,
This is Kwabena (OpenMV President).
The next version of the system will have this in the future. Note that we’ve found out a way to drive the camera faster to enable higher than 30 FPS for some algorithms.
Will it do facial recognition (identification of a person in a photo based on a library of faces) of only facial detection (identify if there is a face, and perhaps it’s coordinates)?
It can do basic detection of faces and relay information about it, but i don’t believe it can actually identify a person. at least i can’t find anything on that.
Hi reissinnovations,
This is Kwabena (OpenMV President), we can detect faces using a Haar Cascade and then tell you face locations. Facial Recognition is possible in the future. But, we haven’t written the code for that.
That said, you can take pictures with the OpenMV Cam and then transmit said pictures to facial recognition services if you have an internet connection for the OpenMV Cam using our WiFi shield.
Very cool product. Will SparkFun create some user guides and example projects using this hardware soon? Hope so :)
Will Sparkfun also stock the lenses and the LCD shield in the future? I need them! (https://openmv.io/collections/products)
pyb.LED(3) turns on the blue led, not the IR. I cannot get the IR LED to turn on with any 1, 2, 3 or 4 parameters. Is the FET dead on my board?
Is it possible and easy to view / stream the video from the camera to somewhere on the internet using a minimum number of external components? Would a simple Arduino or ESP8266 do, or do I need a dedicated computer to do that?
Hi Member #559126,
This is Kwabena (OpenMV President). Yes, we have a WiFi shield which can get your OpenMV Cam online.
Wouldn’t $65 spent on a low end Android phone yield a better camera, faster processor and richer choice of programming environments? You would get a USB2 connection fast enough to stream live video and a fast enough system to make it possible to do that AND do various recognition processes locally. Only downside is losing the serial / spi and i2c outputs and the IR capability and since this product doesn’t feature a controllable IR cut filter it is a dubious feature at best.
At some point repurposing mass consumer products becomes more practical than making a more hacking friendly board out of the obsolete parts that small manufacturers can get parts and datasheets for.
Hi John Morris,
You’re totally correct with your above points if you’re optimizing for performance and cost. Lots of folks are releasing Android systems like this right now.
That said, minimal effort is put into making such systems as easy and as fun to use as your first Microcontroller. The whole point of the OpenMV Cam project is to make it “easy” to control things in the real-world using computer vision functions. For the OpenMV Cam, this mean having a hard 250 mA current consumption roof so you can use the system more easily with robotic applications and program it from your computer with one standard USB cable and nothing else. For more on why… see our FAQ here: https://openmv.io/pages/faq
About the M7 processor - it’s about half the speed of a Raspberry PI zero but with a lot less RAM. It can actually do USB 2.0 but we don’t enable that feature since it would mean we couldn’t have DFU support anymore which makes the OpenMV Cam unbrickable. Given we allow you firmware updates it’s important that you can ALWAYS recover the system.
Note that future OpenMV Cam will have more powerful processors. The idea behind the OpenMV Cam project is to make developing easy by giving you an Arduino like (but with much better tools) programming experience. In particular, one IDE which can be used to control the whole system. Not a lot of different tools bundled together.
You EU peoples had best be circumspect with any monitoring done with this stuff. A relative in the old country hacked some Nikon coolpix cameras to make a generic monitoring system with tracking smarts, then promptly caught some local brats doing bad stuff to her property, then became the subject of an investigation by local LE when the visual evidence was presented.
On this side of the cod pond, you will need to read your state’s code. Most states do not care if you call it a security system, but some states and locales have regulations for monitoring people and collecting and/or storing data on privates.
As for most image processing, desktop Python is my preference. C or Python may not be the issue - as embedded systems simply do not have the resources that a desktop Linux box or OSX box would provide. And windoze will only provide headaches and anger.
Can this device detect text? For instance, for use to compare license plate data to a database?
Geez, been tons of code for this stuff for years. You people ever try that fancy-pants search engine by them google folks? Your inner Big Brother awaits the wakening.
Look at openalpr and opencv. But you will not like doing this with micropy.
Hi jlang,
This is Kwabena (OpenMV President).
Not yet, but, it’s on the todo list for future functionality. We release firmware updates regularly so the feature list expands over time.