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.
工具与软件:
您好、TI 专家!
是否有任何方法将现有 vx_reference 映射或分配给 vxObjectArray?
或者、如果可能、甚至可以使用现有 vx_reference 创建 vxObjectArray。
此致、
Juhyun
您好、Kim、
使用 createObjectarray API 从引用的元数据创建对象数组、然后使用 vxGetObjectArrayItem API 从对象数组获取元素的引用、然后根据引用类型使用映射或复制 API 分配现有引用。
此致、
Gokul
尊敬的 Gokul:
感谢您的回答。
所以如果类型是 vx_image 或 vx_tensor、那么我应该如何通过 vxGetObjectArrayItem 获取的元素映射或分配现有 vx_reference 到 vxObjectArray?
分配的副本应该是浅的、而不是深的副本。
此致、
Juhyun
您好、Kim、
你能详细说明浅拷贝吗?
此致、
Gokul
我的意思是浅拷贝作为通用术语、意思是只复制元数据和缓冲指针、而不涉及缓冲区的实际内存拷贝。
如您所知、我们通常使用指针分配方法。
此致、
Juhyun
Juhunyun、您好!
感谢您的答复。
在以下代码片段中将元素用作 dst 并将现有引用用作 src、
vx_status copyImageHandles(vx_image src, vx_image dst) { vx_status status = VX_SUCCESS; void *addr[TIVX_IMAGE_MAX_PLANES] = {NULL}; uint32_t size[TIVX_IMAGE_MAX_PLANES]; uint32_t num_entries; status = tivxReferenceExportHandle((vx_reference)src, addr, size, max_entries, &num_entries); if(status==VX_SUCCESS) { status = tivxReferenceImportHandle((vx_reference)dst, (const void **)addr, (const uint32_t *)size, num_entries); } return status; }
如果 dst 已分配(由 vxMapImagePatch 或 vxVerifyGraph 分配)、则此操作有效。
此致、
Gokul
尊敬的 Gokul:
我很欣赏代码片段、我知道这个想法并将很快尝试它。
此致、
Juhyun
尊敬的 Gokul:
我测试了你分享的代码,并检查它的工作,我预期。
感谢您的支持、这正是我想要的。
此致、
Juhyun