This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4AL-Q1:GStreamer 问题:在保持宽高比的同时填充带边框的图像

Guru**** 2386610 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1499845/tda4al-q1-gstreamer-issue-padding-images-with-borders-while-keeping-aspect-ratio

器件型号:TDA4AL-Q1

工具/软件:

您好、

我正在使用 edgeai-gst-apps 下的 apps_python 代码来处理大小为640x360的输入图像、通过在顶部和底部添加边框来将其填充到640x640、如下所示:

   ===================== >>  


 我尝试通过删除 红色代码并添加绿色代码来修改 gst_wrapper.py 文件、如下所示:

函数内的原始代码:
--------------------------------------------------------------------------------------------
DEF get_dl_scaler_elements (flow、is_multi_src):
...
       DL_scaler_caps ="video/x-raw、width=%d、height=%d"%元组(调整大小)#640*640
...
...
   Elif flow.input.width / resize[0]< 1或 flow.input.height / resize[1]< 1:
       大写字母="视频/x-RAW、宽度=%d、高度=%d "%(
       flow.input.width、#640
       flow.input.height、#360
       )
       queue_element = make_element ("queue"、caps=cap)
       scale_element = make_element ("videoscale"、caps=dl_scaler_caps)

       否则:
           queue_element = make_element ("queue"、caps=dl_scaler_caps)

       Elem_list = queue_element

       如果 scale_element !=无:
           Elem_list += scale_element

       返回 elem_list


修改后的代码如下所示:
--------------------------------------------------------------------------------------------
DEF get_dl_scaler_elements (flow、is_multi_src):
...
       DL_scaler_caps ="video/x-raw、width=%d、height=%d"%元组(调整大小)#640*640
...
...
       Elif flow.input.width / resize[0]< 1或 flow.input.height / resize[1]< 1:
           大写字母="视频/x-RAW、宽度=%d、高度=%d "%(
               flow.input.width、
               flow.input.height、
           )

           queue_element = make_element ("queue"、caps=cap)
           scale_element = make_element ("videobox"、property ={"top":-140、"bottom":-140、"fill":1})            
           Scale_Element += make_Element ("capsfilter"、caps=dl_scaler_caps)

       否则:

           queue_element = make_element ("queue"、caps=dl_scaler_caps)


       Elem_list = queue_element

       如果 scale_element !=无:
           Elem_list += scale_element

       返回 elem_list

 但 在添加了视频框元素后、流水线停止执行。 这是什么原因?  如何修复此代码? 我使用的 edgeai-gst-apps 版本是09.02.00.05 ‌13.

谢谢、

BR、

拉塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Rata:

    我目前出差外出。 请期待 我明天的答复。

    谢谢您、

    法比亚纳

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Rata:

    您是否 使用配置文件运行 python 应用程序? 所需的坐标可在流程部分中定义: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-am68a/09_02_00/exports/edgeai-docs/common/configuration_file.html#flows

    谢谢您、

    法比亚纳

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Fabiana:

      也许我没有清楚地阐述。 我的目标不是添加边框作为对输出尺寸的后处理效果、而是在预处理过程中对原始图像应用边框填充。 原因在于观察了两种输入格式之间的不同推理结果:

      

       图1 (640x360)‌显示了通过视频刻度拉伸到640x640后的检测偏差、只有人员可以被检测到。
    ‌    ‌带有手动添加边框的图像2 (640x640)可保持正确的宽高比并产生准确的推断、可以同时检测人员和卡车。
       出现这种差异可能是因为视频刻度强制将图像1拉伸到640x640、而图像2通过边框填充保留其原始比例。   因此、我的目标是修改 GStreamer 缩放代码‌‌、以自动添加边框而不是直接拉伸、这会 将输入图像1填充到 输入图像2。   如何修改?

    BR、

    拉塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Rata:

    这不是我过去曾尝试过的。 在直接从终端运行的测试 GStreamer 流水线中、您是否能够以类似的方式成功使用视频框元素? 这将是对基于 GStreamer 的应用程序进行故障排除的最佳方法。

    谢谢您、

    法比亚纳