Git Product home page Git Product logo

cvdictui's Introduction

cvDictUI

opencv-python tool for generating interactive GUI from any python dictionary

From any python dictionary, this simple tool generates a graphical user interface automatically to facilitate tweaking parameters in interactive python applications.

It presents a clean, hierarchical view of all your parameters, where groups of variables can be expanded or collapsed. It also gives you the power to edit integers, floats, strings, lists and dictionaries while your app is running, so you can watch them take effect in real time.

This small script is written in pure python, and uses opencv-python to render its graphics, so it's especially suitable for projects already using these technologies.

Features

Tweak variables in realtime

Expand, collapse and edit nested dictionaries

Customizable themes

Installation

Dependencies

  • Python (mainly tested on Python 2, but should be compatible with Python 3).
  • OpenCV-Python pip install opencv-python

Usage

Simply copy-paste cvDictUI.py to your own project folder, and import it with import cvDictUI.py. Run the file directly for a couple of demos.

Controls

  • q - exit
  • g - toggle GUI display
  • mouse drag to scroll up / down
  • click on fields to edit, enter/return to confirm, esc or click elsewhere to cancel
  • click on [+] [-] icon to expand / collapse

Example

This example draws a circle on the screen, whose radius, color and outline are tweakable from a cvDictUI window.

from cvDictUI import *

# initialize the dictionary containing values to be tweaked
dict_obj = {'color':[0,0,255],'radius':50,'outline':True}

# send the dictionary to cvDictUI
ui = DictUI('panel',dict_obj)
ui.setColors(*THEME_SIMPLE)

# mainloop
while True:
    
    # make a canvas
    im = np.zeros((256,256,3),np.uint8)
    
    # draw a circle with parameters from the dictionary
    cv2.circle(
    	im,(128,128),dict_obj["radius"],
    	color=tuple(dict_obj["color"]),
    	thickness=dict_obj["outline"]*11-1
    )
    
    # show the app window
    cv2.imshow("app",im)
    
    # send key events to cvDictUI
    key = cv2.waitKey(1) & 0xFF
    if not ui.update(key):
        break
        
ui.kill()

cvdictui's People

Contributors

lingdong- 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.