插件之间传递的数据统一采用protobuf定义,具体的数据格式参考“Metadata”章节和“Metadata proto文件”章节。相应的输入数据通过protobuf解析,输出结果通过protobuf组装。
Vision SDK通过插件的“Process()”函数,将输入数据以入参(mxpiBuffer)形式传入,并通过“GetMetadata”接口提供给用户。
具体操作如下:
1 2 3 4 5 | // Get the data from buffer MxpiBuffer * buffer = mxpiBuffer[0]; // 0为输入端口编号,当前版本固定为0。 MxpiMetadataManager mxpiMetadataManager(buffer); std::shared_ptr<void> metadata = mxpiMetadataManager.GetMetadata(key); std::shared_ptr<MxpiVisionList> srcVisionListSptr = std::static_pointer_cast<MxpiVisionList>(metadata); |
其中,key为上游插件挂载输出结果时用的字符串(通常为上游元件名称,例如vpcresize0),将获取到的输入数据转换成相应的数据格式(通过查询上游插件的说明文档获取数据结构,例如MxpiVisionList)。