sliders_hsv.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """Explore RGB and HSV color spaces"""
  2. from vedo import *
  3. from vedo.colors import rgb2hsv, hsv2rgb, rgb2hex
  4. def update_txt(rgb, hsv):
  5. RGB = np.round(np.array(rgb)*255).astype(int)
  6. HEX = rgb2hex(rgb)
  7. name = get_color_name(rgb)
  8. tx1.text(f"RGB: {precision(rgb, 3)}\n {RGB}\nHEX: {HEX}")
  9. tx2.text(f"HSV: {precision(hsv, 3)}\n ~ {name}")
  10. box.color(rgb)
  11. def func_rgb(w, e):
  12. rgb = slr.value, slg.value, slb.value
  13. hsv = rgb2hsv(rgb)
  14. slh.value, sls.value, slv.value = hsv
  15. update_txt(rgb, hsv)
  16. def func_hsv(w, e):
  17. hsv = slh.value, sls.value, slv.value
  18. rgb = hsv2rgb(hsv)
  19. slr.value, slg.value, slb.value = rgb
  20. update_txt(rgb, hsv)
  21. box = Cube().linewidth(2).color([0.5, 0.5, 0.5]).lighting("off")
  22. tx1 = Text2D(font="Calco", s=1.4, pos="top-left", bg="k5").text(__doc__)
  23. tx2 = Text2D(font="Calco", s=1.4, pos="top-right", bg="k5")
  24. plt = Plotter()
  25. slr = plt.add_slider(func_rgb, 0, 1, value=0.5, show_value=False, c="r3", pos=((0.05,0.18),(0.40,0.18)))
  26. slg = plt.add_slider(func_rgb, 0, 1, value=0.5, show_value=False, c="g3", pos=((0.05,0.12),(0.40,0.12)))
  27. slb = plt.add_slider(func_rgb, 0, 1, value=0.5, show_value=False, c="b3", pos=((0.05,0.06),(0.40,0.06)), title="RGB")
  28. slh = plt.add_slider(func_hsv, 0, 1, value=0.5, show_value=False, c="k1", pos=((0.60,0.18),(0.95,0.18)))
  29. sls = plt.add_slider(func_hsv, 0, 1, value=0.0, show_value=False, c="k1", pos=((0.60,0.12),(0.95,0.12)))
  30. slv = plt.add_slider(func_hsv, 0, 1, value=0.5, show_value=False, c="k1", pos=((0.60,0.06),(0.95,0.06)), title="HSV")
  31. plt.show(box, tx1, tx2, viewup="z").close()