Coder Social home page Coder Social logo

jeremylee-aco / openmv Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openmv/openmv

0.0 1.0 0.0 369.16 MB

OpenMV Camera Module

License: MIT License

Makefile 0.05% C 97.89% C++ 0.50% Assembly 0.65% Objective-C 0.03% Python 0.87% Shell 0.01%

openmv's Introduction

OpenMV (Open-Source Machine Vision)

The OpenMV project aims at making machine vision more accessible to beginners by developing a user-friendly, open-source, low-cost machine vision platform.

OpenMV cameras are programmable in Python3 and come with an extensive set of image processing functions such as face detection, keypoints descriptors, color tracking, QR and Bar code decoding, AprilTags, GIF and MJPEG recording, and more. Additionally, the OpenMV Cam comes with a cross-platform IDE (based on Qt Creator) designed specifically to support programmable cameras. The IDE allows viewing the camera's frame buffer, accessing sensor controls, uploading scripts to the camera via serial over USB (or WiFi/BLE if available) and includes a set of image processing tools to generate tags, thresholds, keypoints, and etc...

The first generation of OpenMV cameras is based on STM32 ARM Cortex-M Digital Signal Processors (DSPs) and OmniVision sensors. The boards have built-in RGB and IR LEDs, USB FS support for programming and video streaming, a uSD socket, and I/O headers breaking out PWM, UARTs, SPI, I2C, CAN, and more. Additionally, the OpenMV Cam supports extension modules (shields) using the I/O headers for adding a WiFi adapter, a LCD Display, a Thermal Vision Sensor, a Motor Driver, and more.

The OpenMV project was successfully funded via Kickstarter back in 2015 and has come a long way since then. For more information, please visit https://openmv.io

Building Firmware

For information on how to build the firmware for the OpenMV Cam please see our Firmware Guide.

Interface Library

The OpenMV Cam comes built-in with an RPC (Remote Python/Procedure Call) library which makes it easy to connect the OpenMV Cam to your computer, a SBC (single board computer) like the RaspberryPi or Beaglebone, or a microcontroller like the Arduino or ESP8266/32. The RPC Interface Library works over:

  • Async Serial (UART) - at up 7.5 Mb/s on the OpenMV Cam H7.
  • I2C Bus - at up to 1 Mb/s on the OpenMV Cam H7.
    • Using 1K pull up resistors.
  • SPI Bus - at up to 20 Mb/s on the OpenMV Cam H7.
    • Up to 80 Mb/s or 40 Mb/s is achievable with short enough wires.
  • CAN Bus - at up to 1 Mb/s on the OpenMV Cam H7.
  • USB Virtual COM Port (VCP) - at up to 12 Mb/s on the OpenMV Cam M4/M7/H7.
  • WiFi using the WiFi Shield - at up to 12 Mb/s on the OpenMV Cam M4/M7/H7.

With the RPC Library you can easily get image processing results, stream RAW or JPG image data, or have the OpenMV Cam control another Microcontroller for lower-level hardware control like driving motors.

You can find examples that run on the OpenMV Cam under File->Examples->Remote Control in OpenMV IDE and online here. Finally, OpenMV provides the following libraries for interfacing your OpenMV Cam to other systems below:

  • Generic Python Interface Library for USB and WiFi Comms
    • Provides Python code for connecting your OpenMV Cam to a Windows, Mac, or Linux computer (or RaspberryPi/Beaglebone, etc.) with python programmatically over USB VCP or Ethernet/WiFi (i.e. with sockets).
  • Arduino Interface Library for I2C, SPI, UART Comms - comming soon!
  • RaspberryPi Interface Library for I2C, SPI, UART Comms - comming soon!

Note

If you only need to read print() output from a script running on the OpenMV Cam over USB then you only need to open the OpenMV Cam's Virtual COM Port and read lines of text from the serial port. For example (using pyserial):

import serial

ser = serial.Serial("COM3", timeout=1, dsrdtr=False)

while True:
    line = ser.readline().strip()
    if line: print(line)

The above code works for Windows, Mac, or Linux. You just need to change the above port name to the same name of the USB VCP port the OpenMV Cam shows up as (it will be under /dev/ on Mac or Linux). Note that if you are opening the USB VCP port using another serial library and/or language make sure to set the DTR line to false - otherwise the OpenMV Cam will suppress printed output.

openmv's People

Contributors

bherbruck avatar bitbank2 avatar bj-wanghz avatar dhylands avatar ekrell avatar falkoschindler avatar iabdalkader avatar jeremitu avatar kidswong999 avatar kwagyeman avatar matsondawson avatar mattdawson avatar neurodroid avatar nezra avatar normen avatar peitschie avatar rmackay9 avatar rmokerone avatar seth10 avatar shimniok avatar thehonestmaker avatar wminarik avatar xbaal avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.