Home - EyesOfThings/Software GitHub Wiki
Index
Overview
Welcome to the software wiki of "Eyes of Things", an international project focused on building an open embedded computer vision platform. See more information about EoT in the website.
After more than a year of development we are gradually migrating to this public repository. Expect more software in the upcoming weeks. We are doing likewise with the hardware boards.
The repository is essentially organized according to platform. 'Myriad' is the platform used by EoT. There are also folders for Android and desktop platforms.
Unless stated otherwise, this code is released under the MIT License.
We encourage you to contribute (e.g. new features, bug fixes, a great idea, etc.) to the project. All contributions are welcome and greatly appreciated!
Myriad
Libraries
OpenCV
OpenCV is a widely-used computer vision library with thousands of functions. OpenCV 1.0 has been ported to the EoT board. Additionally, functionality has been added so that later OpenCV versions can be executed in an external server.
libccv
libccv is a minimalist open-source computer vision library for embedded devices. It has been ported to the EoT board with some limitations.
Quirc
Quirc is a library for extracting and decoding QR codes from images. It is fast enough to be used with real time video.
Crypto
Crypto is a library for file system encryption. It uses the symmetric key block cipher algorithm "Advanced Encryption Standard" (AES) with the Counter Mode (CTR) in order to provide data confidentiality. The cryptographic functionality is applied on the file system in the SD card (see SDCardIO).
It is used in:
- OpenCV Examples
- libccv Examples
SDCardIO
SDCardIO is a library for file system management. It is used to develop applications that interact with the SD card in the EoT board.
cblas
cblas is a combination of CBLAS and CLAPACK libraries ported to the Myriad 2 SoC.
It is used in:
- libccv
embUnit
Embedded Unit is unit testing framework for Embedded C System.
It is used in:
- crypto unittests
- sdcard unittests
Read more on embUnit/readme_en.txt
libpng
libpng is the official PNG reference library ported to the Myriad 2 SoC. It supports almost all PNG features, is extensible, and has been extensively tested for over 20 years.
It is used in:
- OpenCV
- libccv
- Quirc examples
zlib
zlib is a general purpose data compression library ported to the Myriad 2 SoC. All the code is thread safe. The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952.
It is used in:
- OpenCV
- libccv
- libpng
Audio
Audio library provides functions for playing and recording audio in the Myriad 2.
HistogramMatching
HistogramMatching library provides functions to:
- Convert images into different colour spaces.
- Compute colour histograms.
- Compute histogram matching scores.
timeFunctions
timeFunctions library provides common time functions.
ElfLoader
ElfLoader library provides functionality to load ELF files from the flash into the memory (ELF files are the binary application files).
FlashIO
FlashIO library provides functions for read/write file access from/to the EoT Flash-EEPROM. It provides a minimal filesystem for the flash memory to manage the placement and retrieval of the individual applications (bootloader, control mode and user apps) in the EoT flash memory.
WifiFunctions
WiFiFunctions library provides common wifi functions such as handling WLAN events, generating an Access Point or changing the operation mode of the device.
JsonParser
JsonParser library provides structures for JSON parsing using only fixed-extent memory. This implementation is based on MicroJSON 1.3, which can be found unmodified here.
Applications
OpenCV Examples
This application runs several examples using the OpenCV library.
libccv Examples
This application runs several examples using the libccv library.
Quirc Examples
This application runs several examples using the Quirc library.
sdcard Example
This application runs an example using the SDCardIO library.
audio Example
This application runs an example using the Audio library.
HistogramMatching Example
This application runs an example using the HistogramMatching library.
Controller Example
This application runs an example using the following libraries:
- FlashIO
- Crypto
- SDCardIO
WiFi Examples
This application runs several examples using the WiFi library.
Pulga Control Application
This application is the proposed tiny MQTT broker implementation for EoT devices.
MicroPython
This application implements a MicroPython interpreter using the MQTT_API on myriad site.
MicroPython Examples
This application runs several commands using MicroPython port for Myriad 2.
JsonParser Example
This application runs an example using the JsonParser library.
Unittests
crypto
This application runs several tests using the Crypto library.
sdcard
This application runs several tests using the SDCardIO library.
HistogramMatching
This application runs several tests using the HistogramMatching library.
timeFunctions
This application runs several tests using the timeFunctions library.
flash
This application runs several tests using the FlashIO library.
flash rtems
This application runs several tests using the FlashIO library with RTEMS components.
wifiFunctions unittests
This application runs several tests using the WiFiFunctions library.
Desktop
Libraries
Paho
Paho Java Client is an MQTT client library written in Java for developing applications that runs on the Java Virtual Machine, JVM. Moreover, it can be used under Android through the Paho Android Service.
Applications
EoT control mode java
This is an example application that connects and interacts with the EoT control mode (pulga_control_app). It provides a way to use the basic device access and configuration functionalities available in that mode. Communication is done through a specific API used via MQTT messages.
EoT python desktop
This application runs several examples using MicroPython application and EoT control mode java application.
Unittests
pulga
This application runs several tests using the Pulga Control Application.
Documents
MQTT API
This document shows useful information about MQTT commands.
Android
Applications
Control Application
This is an example application that connects and interacts with the EoT control mode (pulga_control_app). It provides a way to use the basic device access and configuration functionalities available in that mode. Communication is done through a specific API used via MQTT messages.
Google Play Skeleton Application
This is an example application that uploads an executable file to the Myriad 2. It uses Pulga.