Giter VIP home page Giter VIP logo

opensight's Introduction

OpenSight: the powerful, easy-to-use vision suite

Join our Server MIT License Latest Release Image Last Commit Stars

OpenSight is an FRC-focused, free and open source computer vision system targeted specifically for the Raspberry Pi. Our goal is to make it easy for people not familiar with vision to be able to make complex pipelines, while also providing powerful functionality for advanced users.

OpenSight Nodetree

About

Our mission is to create an accessible vision suite, with an easy-to-use and works out-of-the box experience, but also allow for more power and greater customizability. We want to make vision more accessible to those with less experience, while also providing the tools for power users and developers to easily add features beyond the default modules.

Have any questions, comments, or want to contribute?

You can learn more about contributing here! TL;DR: Join the OpenSight Discord server and we'll get you set up!

How it works

The main components of the OpenSight vision framework are the modules and the pipeline. Vision nodes can be connected to each other to form a vision pipeline which can detect and track targets. OpenSight comes with basic modules such as input from a camera, OpenCV image processing functions, and a FRC Camera Server implementation to show a camera stream on an FRC Dashboard such as Shuffleboard.

Modules

The modules determine what the vision pipeline tracks and to what extent. OpenSight modules take after cv image operations, allowing the user to have much greater control over the vision pipeline.

A basic example of a common pipeline: Camera Input -> Blur -> HSV Range -> Find Contours -> Find Center -> NetworkTables

This of course is just a simple setup, and because an OpenSight pipeline can split into multiple paths, you can customize as much as you want, and even track multiple targets at once.

One unique advantage of OpenSight is its extendability. You can create your own module and with a simple pull request, make it available to any other team! Here

Licensing

OpenSight is free and open source software, now and forever. It is licensed under the MIT License. This means you can modify it, use the program commericially, and use it privately. You may also redistribute it, under the condition it is also distributed under the same or a stricter license. This statement is not legal advice, please read the license for full details. You can find the full terms of the license in the LICENSE file.

Font Awesome

This project uses Font Awesome icons, as seen on the left navigation bar. Font Awesome is licensed under Creative Commons Attribution 4.0. You can find the details of this license here.

opensight's People

Contributors

132ikl avatar bbomb64 avatar c-x-berger avatar carbotaniuman avatar dzil123 avatar jacktoaster avatar michaelmss avatar ntamer03 avatar sammck 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

Watchers

 avatar  avatar  avatar  avatar

opensight's Issues

Program fail in raspi image

I create an issue here because it seems that I can't on opsi-gen.

First, thank you for what you are doing this is awesome !!
So, I tried to test the raspberry image but the camera didn't seem to work and the dashboard wasn't here. I decided to ssh into the raspberry and looked at the opensight service which had effectivly failed.
When I tried to manualy re-run the program, I had this issue :

Traceback (most recent call last):
  File "/bin/opensight", line 81, in <module>
    main()
  File "/bin/opensight", line 70, in main
    program = make_program(package_path)
  File "/bin/opensight", line 31, in make_program
    program.manager.register_module(ModulePath(dir, path))
  File "/usr/lib/python3/dist-packages/opsi/manager/manager.py", line 73, in register_module
    module = import_module(path)
  File "/usr/lib/python3/dist-packages/opsi/manager/manager.py", line 39, in import_module
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/lib/python3/dist-packages/opsi/modules/input.py", line 87, in <module>
    class CameraInput(Function):
  File "/usr/lib/python3/dist-packages/opsi/modules/input.py", line 97, in CameraInput
    @dataclass
  File "/usr/lib/python3/dist-packages/opsi/modules/input.py", line 99, in Settings
    mode: get_modes()
  File "/usr/lib/python3/dist-packages/opsi/modules/input.py", line 70, in get_modes
    "Cam {0}: {1} @ {2:g} fps".format(cam, resolution, float(max(fpses)))
ValueError: max() arg is an empty sequence

Feature Request: Save and load images

Can you make a module that can save image frames and another than can read image frames for development & calibration?

Bonus points if there was a 'hook' page for capturing images, and another hook page for selecting which image to display.

Maybe the 'read image' module could have a feature to let it cycle though a folder of images like a slideshow. That way it would be quick to see how changing parameters affects a wide variety of input images.

CameraInput does not work with older versions v4l-utils

Camera used - Logitech HD Pro Webcam C920 (h264 and MJPEG Capable)

Drive link to the terminal i/o -> https://drive.google.com/drive/folders/1gkdJJtxD8x_nj3azOCujJFEbB3Y4NXah?usp=sharing

Even though our camera was connected, Opensight could not detect the program as running. A test python program was run, testing if the camera was connected. The test program did provide video feed from the camera. After multiple trials, it was revealed that Opensight had a problem. I hope this can be fixed in the future.

CameraInput stalls for 10 seconds on the test run

In rare cases (currently only demonstrated through hardware issues) CameraInput will successfully create a VideoCapture object, however on the test run of the node the read() call will block until select times out (10 seconds, which is longer than the frontend XHR timeout). There should be a timeout for a more reasonable time, such as 1 second since a camera read should never take that long, and return the error properly.

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.