demo_immvision_launcher.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # Part of ImGui Bundle - MIT License - Copyright (c) 2022-2026 Pascal Thomet - https://github.com/pthom/imgui_bundle
  2. from imgui_bundle import imgui, immapp, imgui_md, has_submodule
  3. HAS_IMMVISION = has_submodule("immvision")
  4. if HAS_IMMVISION:
  5. from imgui_bundle import immvision # noqa: F401
  6. import importlib.util # noqa: E402
  7. from imgui_bundle.demos_python import demo_utils # noqa: E402
  8. HAS_OPENCV = importlib.util.find_spec("cv2") is not None
  9. HAS_PILLOW = importlib.util.find_spec("PIL") is not None
  10. if HAS_IMMVISION:
  11. from imgui_bundle.demos_python import demos_immvision
  12. def demo_gui():
  13. if not HAS_IMMVISION:
  14. imgui.text("Dear ImGui Bundle was compiled without support for ImmVision")
  15. return
  16. imgui_md.render_unindented(
  17. """
  18. [ImmVision](https://github.com/pthom/immvision) is an immediate image debugger and inspector. It can display and analyse RGB & float images with 1 to 4 channels, with zoom, pan, pixel inspection, and colormaps.
  19. """
  20. )
  21. if not HAS_PILLOW:
  22. imgui.new_line()
  23. imgui_md.render_unindented("""
  24. ## Missing dependency: Pillow
  25. This demo requires the Python package *Pillow* to load images.
  26. Please install it with:
  27. ```
  28. pip install Pillow
  29. ```
  30. (This demo will use dummy images until Pillow is installed.)
  31. """)
  32. imgui.new_line()
  33. if imgui.collapsing_header("Display images"):
  34. demos_immvision.demo_immvision_display.demo_gui()
  35. demo_utils.show_python_vs_cpp_file("demos_immvision/demo_immvision_display")
  36. if imgui.collapsing_header("Link images zoom"):
  37. demos_immvision.demo_immvision_link.demo_gui()
  38. demo_utils.show_python_vs_cpp_file("demos_immvision/demo_immvision_link")
  39. if imgui.collapsing_header("Image inspector"):
  40. demos_immvision.demo_immvision_inspector.demo_gui()
  41. demo_utils.show_python_vs_cpp_file("demos_immvision/demo_immvision_inspector")
  42. if imgui.collapsing_header("Example with image processing"):
  43. if HAS_OPENCV:
  44. demos_immvision.demo_immvision_process.demo_gui()
  45. demo_utils.show_python_vs_cpp_file(
  46. "demos_immvision/demo_immvision_process", nb_lines=40
  47. )
  48. else:
  49. imgui_md.render_unindented("""
  50. This demo requires OpenCv. Please install OpenCv to run it, with:
  51. ```
  52. pip install opencv-python
  53. ```
  54. """)
  55. def main():
  56. immapp.run(demo_gui, window_size=(1000, 800), with_markdown=True)
  57. if __name__ == "__main__":
  58. main()