seeyou_jpg 2023-04-10 00:24 采纳率: 38.5%
浏览 18
已结题

mmaction2设置中文标签修改demo_spatiotemporal_det.py的cv2.puttext

怎么把mmaction2附带的slowfast,里面的demo_spatiotemporal_det.py的cv2.puttext改成可以显示中文的draw.text。简单来讲就是如何写代码把这个代码段的标签的中文显示出来

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2023-04-10 08:55
    关注

    以下内容部分参考ChatGPT模型:


    你可以使用Pillow库中的ImageDraw模块的text()方法来绘制中文标签。具体步骤如下:

    1. 导入Pillow库中的ImageFont和ImageDraw模块。

    2. 定义字体文件路径和字体大小。

    3. 加载字体文件。

    4. 使用ImageDraw模块的text()方法绘制中文标签。

    下面是修改后的代码段:

    from PIL import ImageFont, ImageDraw
    
    # 字体文件路径和字体大小
    font_path = 'path/to/font.ttf'
    font_size = 20
    
    # 加载字体文件
    font = ImageFont.truetype(font_path, font_size)
    
    # 使用ImageDraw模块绘制中文标签
    draw = ImageDraw.Draw(img)
    draw.text((x1, y1), label, font=font, fill=(255, 255, 255))
    

    其中,x1、y1是标签左上角的坐标,label是中文标签的内容。fill参数指定标签的颜色,可以是RGB值或者颜色名称。

    需要注意的是,ImageDraw模块绘制的标签是在Pillow库中的Image对象上绘制的,因此需要将OpenCV中的图像转换为Pillow库中的Image对象。可以使用Pillow库中的Image.fromarray()方法来实现:

    from PIL import Image
    
    # 将OpenCV中的图像转换为Pillow库中的Image对象
    img = Image.fromarray(frame)
    

    完整的修改后的代码段如下:

    from PIL import ImageFont, ImageDraw
    import cv2
    import torch
    
    # 字体文件路径和字体大小
    font_path = 'path/to/font.ttf'
    font_size = 20
    
    # 加载字体文件
    font = ImageFont.truetype(font_path, font_size)
    
    # 加载模型和标签
    model = torch.load('path/to/model.pth', map_location='cpu')
    with open('path/to/label.txt') as f:
        labels = [line.strip() for line in f.readlines()]
    
    # 打开摄像头
    cap = cv2.VideoCapture(0)
    
    while True:
        ret, frame = cap.read()
    
        # 将OpenCV中的图像转换为Pillow库中的Image对象
        img = Image.fromarray(frame)
    
        # 预处理图像
        # ...
    
        # 前向传播
        # ...
    
        # 获取标签
        # ...
    
        # 使用ImageDraw模块绘制中文标签
        draw = ImageDraw.Draw(img)
        draw.text((x1, y1), label, font=font, fill=(255, 255, 255))
    
        # 将Pillow库中的Image对象转换为OpenCV中的图像
        frame = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
    
        # 显示图像
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    # 释放摄像头并关闭窗口
    cap.release()
    cv2.destroyAllWindows()
    

    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月22日
  • 修改了问题 4月10日
  • 创建了问题 4月10日

悬赏问题

  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!
  • ¥15 这个如何解决详细步骤
  • ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?