Code Monkey home page Code Monkey logo

openmv's Introduction

Firmware Build ๐Ÿ”ฅ GitHub license GitHub release (latest SemVer) GitHub forks GitHub stars GitHub issues

The Open-Source Machine Vision Project

Overview

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 machine learning and image processing functions such as face detection, keypoints descriptors, color tracking, QR and Bar code decoding, AprilTags, GIF and MJPEG recording, and more.

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

TensorFlow support

The OpenMV firmware supports loading quantized TensorFlow Lite models. The firmware supports loading external models that reside on the filesystem to memory (on boards with SDRAM), and internal models (embedded into the firmware) in place. To load an external TensorFlow model from the filesystem from Python use tf Python module. For information on embedding TensorFlow models into the firmware, and loading them, please see TensorFlow Support.

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 VCP, Ethernet/WiFi, UART, Kvarser CAN, and I2C/SPI Comms
    • Provides Python code for connecting your OpenMV Cam to a Windows, Mac, or Linux computer (or RaspberryPi/Beaglebone, etc.).
      • Supports USB VCP on all systems. E.g. direct USB connection to the OpenMV Cam.
      • Supports Ethernet/WiFi on all systems.
      • Supports RS232/RS422/RS485/TTL UARTs on all systems. E.g. the old school DB9 port on the back of a PC, USB to serial RS232/RS422/RS485/TTL adapters, and TTL serial on I/O pins on SBCs like the RaspberryPi/Beaglebone.
      • Supports Kvarser CAN on Windows and Linux (Kvarser does not support Mac).
      • Supports I2C/SPI on Linux SBCs like the RaspberryPi/Beaglebone, etc. (coming soon)
  • Arduino Interface Library for CAN, I2C, SPI, UART Comms
    • Works on all Arduino variants.
    • CAN support via the MCP2515 over SPI or via the CAN peripheral on the ESP32.

Note on serial port

If you only need to read print() output from a script running on an OpenMV camera over USB, then you only need to open the OpenMV camera 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.

Building the firmware from source

The easiest way to patch the firmware and rebuild it, is to fork this repository, enable Actions (from the Actions tab) in the forked repository, and pushing the changes. Our GitHub workflow rebuilds the firmware on pushes to the master branch and/or merging pull requests and generates a development release with attached separate firmware packages per supported board. For more complex changes, and building the OpenMV firmware from source locally, see Building the Firmware From Source.

Contributing to the project

Contributions are most welcome. If you are interested in contributing to the project, start by creating a fork of each of the following repositories:

Clone the forked openmv repository, and add a remote to the main openmv repository:

git clone --recursive https://github.com/<username>/openmv.git
git -C openmv remote add upstream https://github.com/openmv/openmv.git

Set the origin remote of the micropython submodule to the forked micropython repo:

git -C openmv/src/micropython remote set-url origin https://github.com/<username>/micropython.git

Finally add a remote to openmv's micropython fork:

git -C openmv/src/micropython remote add upstream https://github.com/openmv/micropython.git

Now the repositories are ready for pull requests. To send a pull request, create a new feature branch and push it to origin, and use Github to create the pull request from the forked repository to the upstream openmv/micropython repository. For example:

git checkout -b <some_branch_name>
<commit changes>
git push origin -u <some_branch_name>

Contribution guidelines

Please follow the best practices when sending pull requests upstream. In general, the pull request should:

  • Fix one problem. Don't try to tackle multiple issues at once.
  • Split the changes into logical groups using git commits.
  • Pull request title should be less than 78 characters, and match this pattern:
    • <scope>:<1 space><description><.>
  • Commit subject line should be less than 78 characters, and match this pattern:
    • <scope>:<1 space><description><.>

Example PR titles or commit subject lines:

github: Update workflows.
Libtf: Add support for built-in models.
RPC library: Remove CAN bit timing function.
OPENMV4: Add readme template file.
ports/stm32/main.c: Fix storage label.

openmv's People

Contributors

allenerd avatar bherbruck avatar bitbank2 avatar dependabot[bot] avatar dhylands avatar dianjixz avatar galal-hussein avatar iabdalkader avatar jeremitu avatar kdarras avatar kidswong999 avatar kwagyeman avatar lak4cyut avatar linknum23 avatar luzpaz avatar lxowalle avatar matsondawson avatar mattdawson avatar nezra avatar normen avatar pnndra avatar rmackay9 avatar rmokerone avatar sebromero avatar seth10 avatar shimniok avatar shiv-tyagi avatar tejalbarnwal avatar thehonestmaker avatar xue-singtown avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openmv's Issues

openmv.lbr

Hi,
can you add openmv.lbr to repository ?

Thanks

flash update - UI bug

To reproduce:
Open IDE, connect to camera. Click up arrow to enter bootloader. Enter a bogus filename in the dialog box. Click OK. Console reports IOError: [Errno 2] No such file or directory: '/home/mux/src/c/stm32f4/openmv/src/build/openmv.bin'. Dialog box OK and Cancel are greyed out so you cannot exit the dialog normally.

image

missing std.h during inet_ntop.c build

When I cd into src and type make, the build stops with an error. The error is that it cannot find std.h while compiling line 17 of inet_ntop.c:

CC src/option/ccsbcs.c
make[1]: Leaving directory /home/mes/Projects/openmv/src/fatfs' make -C cc3k BUILD=/home/mes/Projects/openmv/src/build/cc3k make[1]: Entering directory/home/mes/Projects/openmv/src/cc3k'
mkdir -p /home/mes/Projects/openmv/src/build/cc3k/src
CC src/cc3000_common.c
CC src/evnt_handler.c
CC src/hci.c
CC src/inet_ntop.c
src/inet_ntop.c:17:17: fatal error: std.h: No such file or directory
#include <std.h>
^
compilation terminated.
make[1]: *** [/home/mes/Projects/openmv/src/build/cc3k/src/inet_ntop.o] Error 1
make[1]: Leaving directory `/home/mes/Projects/openmv/src/cc3k'
make: *** [objs] Error 2
mes@nogales ~/Projects/openmv/src $

Openmv python IDE pyusb error

Got my openmv in mail other day and running into some issues with IDE.

I've tried on native Ubuntu 14.04, and my ubuntu 12.04 and Mint13 vmware/virtualbox setups. The following test is on my vmware with ubuntu 14.04. I get the error on all platforms I tested.

I ran openmv-ide.py and successfully connected to the camera. I can see the stm32f4 when I probe with lsusb as:
Bus 002 Device 004: ID f055:9800

I loaded the fb_viewer.py example file and clicked the cog link. The output I get in my console is:
Traceback (most recent call last):
File "openmv-ide.py", line 356, in execute_clicked
openmv.exec_script(buf)
File "/home/shraken/GitHub/openmv2/usr/openmv.py", line 130, in exec_script
__dev.write(__OUT_EP, buf, __INTERFACE, __TIMEOUT)
TypeError: write() takes at most 4 arguments (5 given)

Googling... looks like some problem with pyusb breaking all old apps, see this thread:
https://bitbucket.org/benallard/galileo/issue/41/errors-in-kubuntu

I removed the __INTERFACE line and that gets rid of the warning on console but I still don't get an image.

The question of openmv version

Access https://github.com/iabdalkader/openmv/tree/master/eagle I found openmv1, openmv2, openmv3 three versions.
1.openmv1 using STM32F407 chips.
2.openmv2 using STM32F429 chip and use SDRAM.
3.openmv3 using STM32F407 chips.
4. In your kickstarter website, the hardware is used STM32F429, do not use SDRAM.

But you have only one source code, I see there are a makefile choice (49 lines to 53 lines), there openmv1 parameter is DSTM32F407xx, default is DSTM32F429xx.

My question is:
1.Above four hardware versions can use your source code (https://github.com/iabdalkader/openmv)?
2.In openmv2 ,SDRAM without any use?(makefile no choice SDRAM)

I'm sorry ,my English is so bad.

Running openmv-ide.py on Mac OSX

I was able to get usr/openmv-ide.py to run on OSX - I don't have a board yet, just trying to figure out if it would be possible on my machine.

I just wanted to offer a few notes on meeting the dependencies to run the IDE on OSX - some of this may be relevant to other systems as well.

Using MacPorts (sudo port install โ€ฆ) I installed the following packages:

  • python27
  • py27-pip
  • py27-numpy
  • py27-pygtksourceview
  • py-pygtk (will bring py27-pygtk along with it)
  • gtk2, glade, and gtksourceview2 will probably get installed as dependencies if the above listed dependencies get installed; there may be others that I already had installed but these were the ones I needed to install specifically.

Then using pip (sudo pip-2.7 install โ€ฆ):

  • pyserial
  • Pillow (provides PIL - Python Imaging Library)

This took a little while to figure out, so I may have missed a fewโ€ฆ I will add others as I think of them.
Note that many OSX users with well-established MacPorts and Python2.7 installations may not need to worry about any of this, or may only be missing a few things. My biggest problem was that the names of the outside packages that I needed were not always obvious.

EDIT- I assume that it is also necessary to install libusb (using MacPorts) and pyusb (using pip) to talk to the OpenMV board, but I don't have the board to confirm that yet.

qt4-ide - unhandled KeyError while running fb_viewer.py

Never saw this before. While running fb_viewer.py with sleep(1), attempted to change value to sleep(20) and clicked run without stopping the existing script; caused a KeyError exception:

$ ./qt4-ide.py
need to add openmv.find() before this can work...
[('/dev/ttyS0', 'ttyS0', 'PNP0501'), ('/dev/ttyACM0', 'ttyACM0', 'USB VID:PID=f055:9800 SNR=000000000011')]
JPEG decode error (not enough image data)
Exception KeyError: KeyError(140432758327040,) in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> ignored
Object::disconnect: No such sig

Rewrite userspace app in Python

rewrite the userspace app (the framebuffer viewer) in Python, this will make it easier to port to Windows and other platforms.. need to look into pygame, pyusb

Generated header files

When the makefile for OpenMV is run, it runs the MicroPython makefile which generates some customized headers in the genhdr directory. I'm having some problems getting this process to work correctly.

Is it possible to put the files in the genhdr directory up on GitHub so I can use those rather than re-generating them myself?

Thanks.

Openmv2 Schematic error in SDRAM part name?

The Eagle schematic lists the SDRAM as partid 'IS42S16800E' (16-bit) but this can't be since you need an 8-bit bus. Is the part actually IS42S81600E (8-bit) and mislabeled?

openmv-ide.py - crashes when camera unplugged

Would be nice if it handled this gracefully.

Traceback (most recent call last):
  File "./openmv-ide.py", line 170, in update_drawing
    fb = openmv.fb_dump()
  File "/home/mes/Projects/openmv/usr/openmv.py", line 106, in fb_dump
    buff = __dev.read(__IN_EP, num_bytes, __INTERFACE, __TIMEOUT)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 670, in read
    self.__get_timeout(timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 780, in bulk_read
    timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 889, in __read
    _check(retval)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 571, in _check
    raise USBError(_str_error[ret], ret, _libusb_errno[ret])
usb.core.USBError: [Errno 19] No such device (it may have been disconnected)
Traceback (most recent call last):
  File "./openmv-ide.py", line 278, in quit
    openmv.stop_script();
  File "/home/mes/Projects/openmv/usr/openmv.py", line 133, in stop_script
    __dev.ctrl_transfer(0x41, __USBDBG_SCRIPT_STOP, 0, __INTERFACE, None, __TIMEOUT)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 711, in ctrl_transfer
    self.__get_timeout(timeout)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 836, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 571, in _check
    raise USBError(_str_error[ret], ret, _libusb_errno[ret])
usb.core.USBError: [Errno 19] No such device (it may have been disconnected)

Board changes

For sake of my sanity :) ...

Can you add a silk indicator for Pin 1 on the RGB LED? I hate having to go to the datasheet :)

Not all of the caps / resistors have their values listed on tvalue/bvalue layers. Can you fix that? After board #100 I'm sure I'll remember where everything goes but for the next batch it'd be great if I could see the correct values for all the caps and resistors.

Python standart libraries

Hello Ibrahim!
I'm searching the libraries that You have been used in examples (in face_tracking.py)

import sensor, time, image

As I know time - is the internal Python library, but others - no. :(

Can You help me: where can I find them?

Thank You very much!
Best Regards,
Alan

Question about openmv-sdr

What is OpenMV-sdr? Its board?

In preferences of idle openmv_v1.1 I see boards v1-v2, but no sdr.

std.h not found

Hi i try make with
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.8.4 20140526 (release)
but can't find std.h file
Can you help ?

Bill of Materials

@iabdalkader thanks an amazing initiative. Many demand something like what you've created. We'd be happy to support it.

@imuguruza and I would love to get access to the BOM. Is it possible for you to share it?

Cannot find std.h while compiling

I ran make from openmv/src.

The compilation stops here when it enters the cc3k directory:

CC src/inet_ntop.c

src/inet_ntop.c:17:17: fatal error: std.h: No such file or directory
#include <std.h>
^
compilation terminated.

I cannot find the std.h anywhere under openmv.
I'm using Linaro: gcc-arm-none-eabi-4_9-2015q1 toolchain.

Not sure what I'm missing. Hope someone can help. Thanks very much

Failed to set custom baud rate: 12000000

When connecting to the IDE this error "Failed to set custom baud rate: 12000000" pops up on Ubuntu 14.04 64bit, Ubuntu 13.10 32bit and windows 7 32 bit. All these machines use pyserial==2.7. If you reduce the baud rate to 4000000 the error does not occur, but in linux you still can not connect to the IDE as the baud does not equal the debug value set in micropython/stmhal/usbd_cdc_interface.c, which leads to a seperate error pyserial error. This does not occur in windows 7.

Lagging on fb_viewer.py (QT/GTK IDEs)

qt4-ide is lagging on fb_viewer.py with sleep(1) with reported 28fps. On my system using sleep(20) it runs 15fps without lag. Ibrahim reported unable to fix problems on his end. Awaiting more details.

We already know that there are race conditions between fb_dump() actions and omv internal framebuffer update. At certain QTimer() intervals within framebuffer.py the race conditions are apparent on my end; partial framebuffers are displayed, with a clear periodicity of how many lines are retrieved.

The qt4-ide uses a thread, versus the gtk idle task in the original IDE, and can run significantly more often and more efficiently which exacerbates the problem, I theorize. Waiting to be proven wrong.

V1 build is broken

compile not found pincfg.h file and exit with error.

arm-none-eabi-gcc -O2 -ggdb3 -DNDEBUG -std=gnu99 -Wall -Werror -mlittle-endian -mthumb -nostartfiles -mabi=aapcs-linux -fdata-sections -ffunction-sections -fsingle-precision-constant -Wdouble-promotion -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -DARM_MATH_CM4 -D__FPU_PRESENT=1 -D__FPU_USED=1 -DUSE_USB_FS -DUSE_DEVICE_MODE -DUSE_USB_OTG_ID=0 -DHSE_VALUE=12000000 -DOPENMV1 -DSTM32F407xx -I. -Iinclude -I/root/test/src/cmsis/include/ -I/root/test/src/cmsis/include/st -I/root/test/src/sthal/include/ -I/root/test/src/fatfs/include/ -I/root/test/src/build/micropython/ -I/root/test/src/micropython/ -I/root/test/src/micropython/py/ -I/root/test/src/micropython/lib/mp-readline -I/root/test/src/micropython/stmhal/ -I/root/test/src/micropython/stmhal/usbdev/core/inc/ -I/root/test/src/micropython/stmhal/usbdev/class/inc/ -I/root/test/src/micropython/stmhal/boards/OPENMV1/ -I/root/test/src/omv/ -I/root/test/src/omv/py/ -I/root/test/src/omv/img/ -I/root/test/src/winc1500/include/ -c -o /root/test/src/build/omv/sdcard_spi.o sdcard_spi.c
sdcard_spi.c:33:20: fatal error: pincfg.h: No such file or directory
#include "pincfg.h"
^
compilation terminated.
make[1]: *** [/root/test/src/build/omv/sdcard_spi.o] Error 1
make[1]: Leaving directory `/root/test/src/omv'
make: *** [objs] Error 2

template save failure when cam disconnected, locks ide

To recreate; disconnect camera, drag box across FB, select save template, error generated (below) and IDE dialog unresponsive (cannot close dialog).

Traceback (most recent call last):
  File "./openmv-ide.py", line 568, in save_template
    openmv.save_template(x/SCALE, y/SCALE, w/SCALE, h/SCALE, entry.get_text()) #Use Scale
  File "/home/mes/Projects/openmv/usr/openmv.py", line 148, in save_template
    __dev.ctrl_transfer(0x41, __USBDBG_TEMPLATE_SAVE, len(buf), __INTERFACE, None, __TIMEOUT)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 971, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 819, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 541, in _strerror
    return _lib.libusb_strerror(errcode).decode('utf8')
  File "/usr/lib/python2.7/ctypes/__init__.py", line 378, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 383, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /lib/x86_64-linux-gnu/libusb-1.0.so.0: undefined symbol: libusb_strerror

image

openmv-ide.py: No module named gtkcodebuffer

Operating system: Debian GNU/Linux 8.0 (jessie), x86-64

I have tried to follow Getting Started and install openmv ide from sources. I have installed the prerequisites for both PyQt4 and GTK.

Once installed, I have switched to openmv/usr directory and tried to start openmv-ide.py:

$ ./openmv-ide.py 
Traceback (most recent call last):
  File "./openmv-ide.py", line 14, in <module>
    import gtkcodebuffer
ImportError: No module named gtkcodebuffer

Unfortunately, I failed to figure out how to install this package.

IDE 1.1 will not run in windows 10

Runs on windows 7 but not on win 10.
Double clicking it doesn't pop up a single message box or anything but a spinning circle for 3 seconds. Nothing shows up in task manager.

Add more sensor functions

Please add:

sensor.gain_control(off_or_on) // false/true to turn auto gain control (agc) off or on respectively.
sensor.white_balance(off_or_on) // false/true to turn auto white balance (awb) off or on respectively.
sensor.horizontal_mirror(off_or_on) // false/true to turn horizontal mirror off or on respectively.
sensor.vertical_flip(off_or_on) // false/true to turn vertical flip off or on respectively.

editor indent problems

Current editor indents incorrectly? Getting "unexpected indent" when editing files and using tab in the IDE editor.

Find within rectangle

If we don't have it yet (I didn't see anything exactly like it in source) it'd be really handy to be able to constrain blob detection (or anything, really) to a bounding rectangle. E.g., pips on a die or finding color "markers" red square in blue square, pink square next to green square, etc.

Fails to link with gcc 4.9

I was trying to compile latest openmv (9ddaca0) with arm-none-eabi-gcc 4.9.2 but it fails with the following error:

arm-none-eabi-cpp -P -E -DOPENMV1 omv/stm32f4xx.ld.S > /home/reinis/projects/ee/openmv/src/build/stm32f4xx.lds
arm-none-eabi-gcc -mcpu=cortex-m4 -mabi=aapcs-linux -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -nostdlib -Wl,--gc-sections -Wl,-T/home/reinis/projects/ee/openmv/src/build/stm32f4xx.lds /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/CommonTables/arm_common_tables.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/FastMathFunctions/arm_sqrt_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/FastMathFunctions/arm_sqrt_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/FastMathFunctions/arm_sin_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/FastMathFunctions/arm_sin_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/FastMathFunctions/arm_cos_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/FastMathFunctions/arm_cos_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/FastMathFunctions/arm_sin_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/FastMathFunctions/arm_cos_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_mult_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_mult_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_scale_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_scale_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_mult_fast_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_mult_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_scale_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_inverse_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_sub_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_sub_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_mult_fast_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_sub_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_trans_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_trans_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_add_q15.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_init_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_add_f32.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_trans_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_init_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_add_q31.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/dsp/MatrixFunctions/arm_mat_init_q15.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_rng.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_uart.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_tim.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_pcd_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_adc.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_pwr.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_spi.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_gpio.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_hcd.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_ll_fmc.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_flash_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_cortex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_tim_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_adc_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_dma.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_ll_sdmmc.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_rtc.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_rtc_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_i2c.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_ll_usb.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_dma_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_sd.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_rcc.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_flash.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_sdram.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_pwr_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_i2c_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_usart.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_dcmi.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_pcd.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal_rcc_ex.o /home/reinis/projects/ee/openmv/src/build/sthal/src/stm32f4xx_hal.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/patch.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/spi.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/inet_pton.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/evnt_handler.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/inet_ntop.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/wlan.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/security.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/netapp.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/hci.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/cc3000_common.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/patch_prog.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/socket.o /home/reinis/projects/ee/openmv/src/build/cc3k/src/nvmem.o /home/reinis/projects/ee/openmv/src/build/fatfs/src/ff.o /home/reinis/projects/ee/openmv/src/build/fatfs/src/option/ccsbcs.o /home/reinis/projects/ee/openmv/src/build/omv/main.o /home/reinis/projects/ee/openmv/src/build/omv/xalloc.o /home/reinis/projects/ee/openmv/src/build/omv/array.o /home/reinis/projects/ee/openmv/src/build/omv/usbdbg.o /home/reinis/projects/ee/openmv/src/build/omv/systick.o /home/reinis/projects/ee/openmv/src/build/omv/sccb.o /home/reinis/projects/ee/openmv/src/build/omv/ov9650.o /home/reinis/projects/ee/openmv/src/build/omv/ov2640.o /home/reinis/projects/ee/openmv/src/build/omv/sensor.o /home/reinis/projects/ee/openmv/src/build/omv/rng.o /home/reinis/projects/ee/openmv/src/build/omv/stm32f4xx_hal_msp.o /home/reinis/projects/ee/openmv/src/build/omv/soft_i2c.o /home/reinis/projects/ee/openmv/src/build/omv/mutex.o /home/reinis/projects/ee/openmv/src/build/omv/sdcard_spi.o /home/reinis/projects/ee/openmv/src/build/omv/img/blob.o /home/reinis/projects/ee/openmv/src/build/omv/img/fmath.o /home/reinis/projects/ee/openmv/src/build/omv/img/haar.o /home/reinis/projects/ee/openmv/src/build/omv/img/imlib.o /home/reinis/projects/ee/openmv/src/build/omv/img/integral.o /home/reinis/projects/ee/openmv/src/build/omv/img/kmeans.o /home/reinis/projects/ee/openmv/src/build/omv/img/lab.o /home/reinis/projects/ee/openmv/src/build/omv/img/rainbow_tab.o /home/reinis/projects/ee/openmv/src/build/omv/img/median.o /home/reinis/projects/ee/openmv/src/build/omv/img/point.o /home/reinis/projects/ee/openmv/src/build/omv/img/ppm.o /home/reinis/projects/ee/openmv/src/build/omv/img/rectangle.o /home/reinis/projects/ee/openmv/src/build/omv/img/fast.o /home/reinis/projects/ee/openmv/src/build/omv/img/freak.o /home/reinis/projects/ee/openmv/src/build/omv/img/template.o /home/reinis/projects/ee/openmv/src/build/omv/img/font.o /home/reinis/projects/ee/openmv/src/build/omv/img/jpeg.o /home/reinis/projects/ee/openmv/src/build/omv/img/lbp.o /home/reinis/projects/ee/openmv/src/build/omv/img/eye.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_led.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_sensor.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_image.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_time.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_clock.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_wlan.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_socket.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_select.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_gpio.o /home/reinis/projects/ee/openmv/src/build/omv/py/py_spi.o /home/reinis/projects/ee/openmv/src/build/omv/py/uart.o /home/reinis/projects/ee/openmv/src/build/omv/py/mlx90620.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/st/system_stm32f4xx.o /home/reinis/projects/ee/openmv/src/build/cmsis/src/st/startup_stm32f407xx.o /home/reinis/projects/ee/openmv/src/build/micropython/py/map.o /home/reinis/projects/ee/openmv/src/build/micropython/py/gc.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitinlinethumb.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objlist.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitcommon.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objfloat.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modgc.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objmap.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objzip.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitnthumb.o /home/reinis/projects/ee/openmv/src/build/micropython/py/lexer.o /home/reinis/projects/ee/openmv/src/build/micropython/py/pfenv_printf.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objboundmeth.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objobject.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objstringio.o /home/reinis/projects/ee/openmv/src/build/micropython/py/stream.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objproperty.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modmicropython.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objstrunicode.o /home/reinis/projects/ee/openmv/src/build/micropython/py/lexerunix.o /home/reinis/projects/ee/openmv/src/build/micropython/py/builtin.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objfun.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modcmath.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objcomplex.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objclosure.o /home/reinis/projects/ee/openmv/src/build/micropython/py/builtinevex.o /home/reinis/projects/ee/openmv/src/build/micropython/py/parsenumbase.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modio.o /home/reinis/projects/ee/openmv/src/build/micropython/py/obj.o /home/reinis/projects/ee/openmv/src/build/micropython/py/vstr.o /home/reinis/projects/ee/openmv/src/build/micropython/py/compile.o /home/reinis/projects/ee/openmv/src/build/micropython/py/nlrx86.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modarray.o /home/reinis/projects/ee/openmv/src/build/micropython/py/argcheck.o /home/reinis/projects/ee/openmv/src/build/micropython/py/nlrx64.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objenumerate.o /home/reinis/projects/ee/openmv/src/build/micropython/py/vm.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modmath.o /home/reinis/projects/ee/openmv/src/build/micropython/py/builtintables.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objtype.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objdict.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modsys.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objtuple.o /home/reinis/projects/ee/openmv/src/build/micropython/py/asmarm.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objcell.o /home/reinis/projects/ee/openmv/src/build/micropython/py/runtime.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objset.o /home/reinis/projects/ee/openmv/src/build/micropython/py/smallint.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objfilter.o /home/reinis/projects/ee/openmv/src/build/micropython/py/unicode.o /home/reinis/projects/ee/openmv/src/build/micropython/py/parsenum.o /home/reinis/projects/ee/openmv/src/build/micropython/py/sequence.o /home/reinis/projects/ee/openmv/src/build/micropython/py/nativeglue.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitglue.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objmodule.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objint_mpz.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objslice.o /home/reinis/projects/ee/openmv/src/build/micropython/py/repl.o /home/reinis/projects/ee/openmv/src/build/micropython/py/lexerstr.o /home/reinis/projects/ee/openmv/src/build/micropython/py/builtinimport.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objint.o /home/reinis/projects/ee/openmv/src/build/micropython/py/formatfloat.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitcpy.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objgetitemiter.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitnx86.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objstr.o /home/reinis/projects/ee/openmv/src/build/micropython/py/bc.o /home/reinis/projects/ee/openmv/src/build/micropython/py/asmthumb.o /home/reinis/projects/ee/openmv/src/build/micropython/py/qstr.o /home/reinis/projects/ee/openmv/src/build/micropython/py/nlrthumb.o /home/reinis/projects/ee/openmv/src/build/micropython/py/opmethods.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objexcept.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitnx64.o /home/reinis/projects/ee/openmv/src/build/micropython/py/showbc.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objarray.o /home/reinis/projects/ee/openmv/src/build/micropython/py/stackctrl.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modcollections.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitbc.o /home/reinis/projects/ee/openmv/src/build/micropython/py/mpz.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitpass1.o /home/reinis/projects/ee/openmv/src/build/micropython/py/asmx64.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objrange.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objbool.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objnone.o /home/reinis/projects/ee/openmv/src/build/micropython/py/binary.o /home/reinis/projects/ee/openmv/src/build/micropython/py/nlrsetjmp.o /home/reinis/projects/ee/openmv/src/build/micropython/py/parse.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objreversed.o /home/reinis/projects/ee/openmv/src/build/micropython/py/parsehelper.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objgenerator.o /home/reinis/projects/ee/openmv/src/build/micropython/py/malloc.o /home/reinis/projects/ee/openmv/src/build/micropython/py/emitnarm.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objint_longlong.o /home/reinis/projects/ee/openmv/src/build/micropython/py/asmx86.o /home/reinis/projects/ee/openmv/src/build/micropython/py/pfenv.o /home/reinis/projects/ee/openmv/src/build/micropython/py/scope.o /home/reinis/projects/ee/openmv/src/build/micropython/py/objnamedtuple.o /home/reinis/projects/ee/openmv/src/build/micropython/py/modstruct.o /home/reinis/projects/ee/openmv/src/build/micropython/stm32f4xx_it.o /home/reinis/projects/ee/openmv/src/build/micropython/string0.o /home/reinis/projects/ee/openmv/src/build/micropython/usbd_conf.o /home/reinis/projects/ee/openmv/src/build/micropython/usbd_desc_cdc_msc.o /home/reinis/projects/ee/openmv/src/build/micropython/usbd_cdc_interface.o /home/reinis/projects/ee/openmv/src/build/micropython/usbd_msc_storage.o /home/reinis/projects/ee/openmv/src/build/micropython/pendsv.o /home/reinis/projects/ee/openmv/src/build/micropython/bufhelper.o /home/reinis/projects/ee/openmv/src/build/micropython/usb.o /home/reinis/projects/ee/openmv/src/build/micropython/printf.o /home/reinis/projects/ee/openmv/src/build/micropython/gchelper.o /home/reinis/projects/ee/openmv/src/build/micropython/gccollect.o /home/reinis/projects/ee/openmv/src/build/micropython/pybstdio.o /home/reinis/projects/ee/openmv/src/build/micropython/readline.o /home/reinis/projects/ee/openmv/src/build/micropython/pyexec.o /home/reinis/projects/ee/openmv/src/build/micropython/help.o /home/reinis/projects/ee/openmv/src/build/micropython/input.o /home/reinis/projects/ee/openmv/src/build/micropython/import.o /home/reinis/projects/ee/openmv/src/build/micropython/lexerfatfs.o /home/reinis/projects/ee/openmv/src/build/micropython/flash.o /home/reinis/projects/ee/openmv/src/build/micropython/diskio.o /home/reinis/projects/ee/openmv/src/build/micropython/storage.o /home/reinis/projects/ee/openmv/src/build/micropython/file.o /home/reinis/projects/ee/openmv/src/build/micropython/rtc.o /home/reinis/projects/ee/openmv/src/build/micropython/pin.o /home/reinis/projects/ee/openmv/src/build/micropython/timer.o /home/reinis/projects/ee/openmv/src/build/micropython/servo.o /home/reinis/projects/ee/openmv/src/build/micropython/lib/libm/atanf.o /home/reinis/projects/ee/openmv/src/build/micropython/lib/libm/atan2f.o /home/reinis/projects/ee/openmv/src/build/micropython/lib/libm/math.o /home/reinis/projects/ee/openmv/src/build/micropython/lib/libm/mathsincos.o /home/reinis/projects/ee/openmv/src/build/micropython/lib/libm/fmodf.o /home/reinis/projects/ee/openmv/src/build/micropython/usbdev/core/src/usbd_core.o /home/reinis/projects/ee/openmv/src/build/micropython/usbdev/core/src/usbd_ctlreq.o /home/reinis/projects/ee/openmv/src/build/micropython/usbdev/core/src/usbd_ioreq.o /home/reinis/projects/ee/openmv/src/build/micropython/usbdev/class/cdc_msc_hid/src/usbd_cdc_msc_hid.o /home/reinis/projects/ee/openmv/src/build/micropython/usbdev/class/cdc_msc_hid/src/usbd_msc_bot.o /home/reinis/projects/ee/openmv/src/build/micropython/usbdev/class/cdc_msc_hid/src/usbd_msc_scsi.o /home/reinis/projects/ee/openmv/src/build/micropython/usbdev/class/cdc_msc_hid/src/usbd_msc_data.o  -o /home/reinis/projects/ee/openmv/src/build/openmv.elf
/usr/lib/gcc/arm-none-eabi/4.9.2/../../../../arm-none-eabi/bin/ld: /home/reinis/projects/ee/openmv/src/build/openmv.elf section `.isr_vector' will not fit in region `FLASH_ISR'
/usr/lib/gcc/arm-none-eabi/4.9.2/../../../../arm-none-eabi/bin/ld: region `FLASH_ISR' overflowed by 112 bytes
collect2: error: ld returned 1 exit status
Makefile:256: recipe for target '/home/reinis/projects/ee/openmv/src/build/openmv.elf' failed
make: *** [/home/reinis/projects/ee/openmv/src/build/openmv.elf] Error 1

I'm not sure about the exact cause of this error, but I can report that the same code compiles cleanly on gcc 4.8. Feel free to close this issue- I'm reporting it so others can google the error message :>

Freak Keypoint loading doesn't work

We need the ability to load and unload freak keypoints. Similarly, we should be able to load and unload LBP descriptors.

In general, please fix the issues with the interface between the GUI and the OpenMV Cam with FAST/FREAK and LBP.

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.