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.

[参考译文] TDA4VM:是否可以在没有 OpenVX 节点的情况下访问 VISS 输出图像存储器?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1521521/tda4vm-is-it-possible-to-access-viss-output-image-memory-without-openvx-node

器件型号:TDA4VM

工具/软件:

尊敬的 TI 专家:

我们拥有采用 CPU 计算的原始停驻时隙检测算法。
我知道我们需要创建一个自定义 OpenVX 节点、以便将该算法移植到 j721电路板上、但这有点复杂。

最初、我们创建了4个等于摄像机数量的线程、每个线程访问摄像机图像的存储器并检测停车位。 我们最简单的方法是访问4个摄像头图像存储器(作为主机存储器)。

您可能会推荐 OpenVX、但我们提出这个问题是因为我们没有太多时间用于开发。

我 已经应用了这个线程中获得的补丁。
TDA4VM:提高定制 avp4演示的处理速度-处理器论坛-处理器- TI E2E 支持论坛

是否可以直接从排队的 VISS 输出图形参数访问图像存储器?

此致、

Daigo

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

    尊敬的 Daigo:

    是的、可以从 vx_image 对象获取图像存储器。

    当您将 viss 输出作为图形参数时、您将对指向 object_array 通道0的 vx_image 类型的引用进行排队/出队。 由此可以获取其父对象(object_array)、然后可以获取输出的所有通道。

        status = vxGraphParameterDequeueDoneRef(obj->graph, obj->viss_output_graph_parameter_index, (vx_reference*)&viss_output, 1, &num_refs);
    
        vx_image viss_image[4];
    
        vx_object_array parent_obj_arr = vxCastRefAsObjectArray( tivxGetReferenceParent(vxCastRefFromImage(viss_output)), &status );
        
        viss_image[0] = (vx_image)vxGetObjectArrayItem(parent_obj_arr, 0); // channel 0
        viss_image[1] = (vx_image)vxGetObjectArrayItem(parent_obj_arr, 1); // channel 1
        viss_image[2] = (vx_image)vxGetObjectArrayItem(parent_obj_arr, 2); // channel 2
        viss_image[3] = (vx_image)vxGetObjectArrayItem(parent_obj_arr, 3); // channel 3
    

    您可以使用 vxMapImagePatch() API 获取图像数据的存储器指针、并且可以在应用程序中对其进行处理。

    此致、
    Gokul

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

    尊敬的 Gokul:

    谢谢、这正是我想要做的。 我不知道这个功能是否存在。

    现在我知道我可以使用此 func 在 CPU 上进行图像处理、我想我应该知道的一点是:在我们通知线程我们自己检测到内存地址后、下一帧将写入此内存。  您能建议如何管理?

    此致、

    Daigo

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

    尊敬的 Gokul:

    我实际上尝试了这种内存访问方法、并在地图之后打印了一个日志。

    日志在映射后打印系统时间(以毫秒为单位)、帧 ID 和内存地址。

    然后我发现了一些奇怪的东西。 有时、到下一个帧 ID 的时间非常短。 这是为什么? 如果摄像头的速度为30fps、则间隔应约为34ms。

    [timestamp] [id]              memory address
    [175880] [10] viss_image[0] = 0x9B71F000
    [175985] [11] viss_image[0] = 0xA4012000
    [175986] [12] viss_image[0] = 0x9AAF7000
    [176019] [13] viss_image[0] = 0x99ECF000
    [176049] [14] viss_image[0] = 0x9B71F000
    [176084] [15] viss_image[0] = 0xA4012000
    [176128] [16] viss_image[0] = 0x99ECF000
    [176165] [17] viss_image[0] = 0x9AAF7000
    [176199] [18] viss_image[0] = 0x9B71F000
    [176236] [19] viss_image[0] = 0xA4012000
    [176298] [20] viss_image[0] = 0x99ECF000
    [176298] [21] viss_image[0] = 0x9AAF7000
    [176330] [22] viss_image[0] = 0x9B71F000

    此致、

    Daigo

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

    尊敬的 Daigo:

    请您为此提出另一个线程、其中提到了图形的详细信息(图形中连接的节点)。

    此致、
    Gokul

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

    尊敬的 Gokul:

    我创建了新线程: TDA4VM:VISS 输出出队间隔太短? -处理器论坛-处理器- TI E2E 支持论坛

    此致、

    Daigo

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

    谢谢 Daigo、结束本主题。

    此致、
    Gokul