dearpygui库的使用

dearpygui库的使用

作为一名CV调包侠,高大上的人工智算法当然要好好包装下,做一手好demo也就成了必备技能。
实际使用时经常需要将摄像头输入的图片,检测结果的bounding box,以及各项指标动态的绘制在GUI界面上,
通过各种动态图表,曲线甚至炫酷的3d动画让我们的demo高大上。


今天这些需求都能在一个强大的Python库中实现:dearpygui.

dearpygui介绍

先上几个由dearpygui创建的效果图:







甚至可以用来做二维游戏

  • hello world
    下面这个包含了button, textlabel, trackbar的界面

可以用下面寥寥几行代码实现:

import dearpygui.dearpygui as dpg

def save_callback():
    print("Save Clicked")

with dpg.window(label="Example Window"):
    dpg.add_text("Hello world")
    dpg.add_button(label="Save", callback=save_callback)
    dpg.add_input_text(label="string")
    dpg.add_slider_float(label="float")

dpg.setup_viewport()
dpg.start_dearpygui()

更多demo代码:
https://github.com/Pcothren/DearPyGui-Examples

OpenCV+dearpygui读取&显示视频demo

如何把OpenCV读取的图片用dearpygui显示呢?网上没有找到啥相关资料,所以自己做了个:
https://github.com/lyyiangang/dearpygui_demo.git

import cv2
import numpy as np
import dearpygui.dearpygui  as dpg

def to_rgb(bgr_img):
    return bgr_img[..., [2, 1, 0]]

def normalize(img):
    return img.astype(np.float32) / 255

def run():
    video_file = 'data/1607125853136.mp4'
    cap = cv2.VideoCapture(video_file)
    assert cap.isOpened(), f'can not open video file {video_file}'
    _, first_frame = cap.read()
    h, w = first_frame.shape[:2]

    raw_data = np.zeros((h,w,3), np.float32)
    with dpg.texture_registry():
        texture_id = dpg.add_raw_texture(w, h, raw_data, format=dpg.mvFormat_Float_rgb)
    with dpg.window(label="Main"):
        dpg.add_image(texture_id)

    # equal to dpg.start_dearpygui()
    if not dpg.is_viewport_created():
        dpg.setup_viewport()
    while(dpg.is_dearpygui_running()):
        print('loop----------')
        ret, bgr_img = cap.read()
        if not ret:
            break
        # 需要转换为rgb格式,并归一化到[0, 1]
        norm_rgb_img = normalize(to_rgb(bgr_img))
        raw_data[...] = norm_rgb_img[...]
        dpg.render_dearpygui_frame()   
    dpg.cleanup_dearpygui()
        
if __name__ == '__main__':
    run()

对于上面的代码需要注意几点:

  1. dearpygui使用的图片是rgb格式,并且要归一化到[0, 1],为浮点类型数据。
  2. 官方demo用的都是dpg.start_dearpygui()启动主循环,但是对于这个例子来说,需要在每帧render时读取视频里一帧新图片,所以这里使用下列代码实现:
if not dpg.is_viewport_created():
    dpg.setup_viewport()
while(dpg.is_dearpygui_running()):
    print('loop----------')
    ret, bgr_img = cap.read()
    if not ret:
        break
    # 需要转换为rgb格式,并归一化到[0, 1]
    norm_rgb_img = normalize(to_rgb(bgr_img))
    raw_data[...] = norm_rgb_img[...]
    dpg.render_dearpygui_frame()   
dpg.cleanup_dearpygui()

结果如下:

接下来就可以抄抄demo中代码,在视频上动态的绘制帧率,曲线动画什么的了

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要知道 Dear PyGui 的版本,可以使用以下代码: ```python import dearpygui print(dearpygui.__version__) ``` 这将打印出当前 Dear PyGui 的版本号。 ### 回答2: 要知道`Dear PyGui`的版本,可以使用以下方法: 1. 查看`Dear PyGui`的文档或官方网站:通常,`Dear PyGui`的官方文档会提供关于当前版本的信息。您可以查找其文档或访问官方网站,以了解最新的版本信息。 2. 使用`pip`命令:如果您已经在您的开发环境中安装了`Dear PyGui`,您可以在终端或命令提示符中运行以下命令来获取版本信息: ``` pip show dearpygui ``` 该命令会显示关于您安装的`Dear PyGui`版本的详细信息,包括版本号。 3. 在Python代码中获取版本信息:在您的Python代码中,您可以使用`dearpygui.core`模块的`get_version()`函数来获取当前`Dear PyGui`的版本号。例如: ```python import dearpygui.core as dpg version = dpg.get_version() print(f"Dear PyGui 版本号:{version}") ``` 通过这种方式,您可以在运行时动态地获取`Dear PyGui`的版本信息并将其打印出来。 无论您选择哪种方法,都能帮助您找到并了解当前所使用的`Dear PyGui`版本的价值。 ### 回答3: 要知道dearpygui的版本,可以通过以下几种方法进行查询: 1. 通过代码:打开你的Python集成开发环境(如PyCharm等),进入你的项目文件夹。在项目中的任意一个Python文件中,导入dearpygui,并使用`__version__`属性来获取版本号。示例代码如下: ```python import dearpygui version = dearpygui.__version__ print(f"dearpygui版本号为:{version}") ``` 2. 通过命令行:打开终端或命令提示符,进入到你的Python项目文件夹中。执行命令`pip show dearpygui`来获取dearpygui的详细信息。其中包括版本号。示例命令如下: ``` pip show dearpygui ``` 命令执行后,会显示关于dearpygui的详细信息,其中一部分是版本号。 3. 通过官方文档:进入dearpygui的官方网站(https://dearpygui.org/),在网站的首页或者项目的相关页面上,通常会明确声明所提供的版本号。可以在这些地方查找你所使用的dearpygui版本号。 上述方法中,前两种方式可以通过实际代码和命令行来直接获取版本号,而第三种方式则需要用户主动前往官方网站来查找版本号说明。以上方法中任选一种便可以获取到dearpygui的版本号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值