昇腾社区首页
中文
注册

SequentialStream使用样例

示例代码

from mindx.sdk.stream import BufferInput
from mindx.sdk.stream import PluginNode, SequentialStream

props0 = {
    "modelPath":"../models/yolov3/yolov3_tf_bs1_fp16.om",
    "postProcessConfigPath":"../models/yolov3/yolov3_tf_bs1_fp16.cfg",
    "labelPath":"../models/yolov3/yolov3.names",
    "postProcessLibPath":"libMpYOLOv3PostProcessor.so"
}
props1 = {
    "modelPath":"../models/resnet50/resnet50_aipp_tf.om",
    "postProcessConfigPath":"../models/resnet50/resnet50_aipp_tf.cfg",
    "labelPath":"../models/resnet50/resnet50_clsidx_to_labels.names",
    "postProcessLibPath":"libresnet50postprocessor.so"
}
props2 = {
    "outputDataKeys":"mxpi_modelinfer0,mxpi_modelinfer1"
}

try:
    s=SequentialStream("stream")
    s.set_device_id("0")
    s.add(PluginNode("appsrc"))
    s.add(PluginNode("mxpi_imagedecoder"))
    s.add(PluginNode("mxpi_imageresize"))
    s.add(PluginNode("mxpi_modelinfer", props0))
    s.add(PluginNode("mxpi_imagecrop"))
    s.add(PluginNode("mxpi_imageresize"))
    s.add(PluginNode("mxpi_modelinfer", props1))
    s.add(PluginNode("mxpi_dataserialize", props2))
    s.add(PluginNode("appsink"))
    s.build()

    bufferInput = BufferInput()
    with open("test.jpg", 'rb') as rf:
        bufferInput.data = rf.read()
    s.send("appsrc0", [], bufferInput)
    result = s.get_result("appsink0", [], 3000)
    print("result:", result.buffer_output.data)
except Exception as e:
    print(e)