【零基础入门SDK】小白带你配置MindX SDK中的pipeline
【摘要】 【摘要】 新手村小白带你一起攻略MXSDK,每月不定期更新。动动手指,一键三连,欢迎关注up主~~~
0前言
本帖主要是教会小白如何配置自己的pipeline。如果你还不知道pipeline是什么,请点击链接:【零基础入门SDK】小白带你读懂MindX SDK中的pipeline-云社区-华为云 (huaweicloud.com)
现在可以开始配置自己的pipeline了。我们现在从最简单的流程开始,学习如何配置pipeline。
案例1:解码-编码流程
在案例1中,我们的pipeline执行如下流程:
步骤1:配置pipeline
{
"classification+detection": {
"stream_config": {
"deviceId": "0"
},
"mxpi_imagedecoder0": {
"factory": "mxpi_imagedecoder",
"next": "mxpi_imageencoder0"
},
"mxpi_imageencoder0": {
"factory": "mxpi_imageencoder",
"next": "filesink0"
},
"filesink0": {
"props": {
"location": "./rgb_result.jpg"
},
"factory": "filesink"
},
"appsrc0": {
"props": {
"blocksize": "409600"
},
"factory": "appsrc",
"next": "mxpi_imagedecoder0"
}
}
}
上述的pipeline流程如下
appsrc(图片获取)--> mxpi_imagedecoder(图片解码)-->mxpi_imageencoder(图片编码)-->filesink(图片保存)
注:filesink插件是gstreamer的开源插件,功能是将图片保存;location设置保存路径。除了filesink,其余插件的说明都可以在用户手册中查询到。
此外,在这个流程中,我们输入图片的长宽像素必须是偶数。
步骤2:修改main函数。核对pipeline的读取路径。注释掉main函数的get stream output 部分,因为流程中没有使用appsink。因此没有输出。
步骤3:将修改后的pipeline和main函数上传至服务器相应的位置,运行./run.sh。 将图片解码后,又编码,可以查看新图片没有任何变化。
案例2:查看缩放后的图片
在案例2中,我们的pipeline执行如下流程:
配置相应的pipeline
{
"classification+detection": {
"stream_config": {
"deviceId": "0"
},
"mxpi_imagedecoder0": {
"factory": "mxpi_imagedecoder",
"next": "mxpi_imageresize0"
},
"mxpi_imageresize0": {
"props": {
"dataSource": "mxpi_imagedecoder0",
"resizeHeight": "416",
"resizeWidth": "416"
},
"factory": "mxpi_imageresize",
"next": "mxpi_imageencoder0"
},
"mxpi_imageencoder0": {
"factory": "mxpi_imageencoder",
"next": "filesink0"
},
"filesink0": {
"props": {
"location": "../pipeline/rgb_result.jpg"
},
"factory": "filesink"
},
"appsrc0": {
"props": {
"blocksize": "409600"
},
"factory": "appsrc",
"next": "mxpi_imagedecoder0"
}
}
}
执行的相关流程参考案例1。
在imageresize中设置了resizeHight以及resizeWidth两个参数。最终图片缩放结果如下:
案例3:查看图片裁剪后的图片
在案例3中,我们的pipeline执行如下流程:
配置pipeline
{
"classification+detection": {
"stream_config": {
"deviceId": "0"
},
"mxpi_imagedecoder0": {
"factory": "mxpi_imagedecoder",
"next": "mxpi_imageresize0"
},
"mxpi_imageresize0": {
"factory": "mxpi_imageresize",
"next": "mxpi_modelinfer0"
},
"mxpi_modelinfer0": {
"props": {
"modelPath": "../models/yolov3/yolov3_tf_bs1_fp16.om",
"postProcessConfigPath": "../models/yolov3/yolov3_tf_bs1_fp16.cfg",
"labelPath": "../models/yolov3/coco.names",
"postProcessLibPath": "libMpYOLOv3PostProcessor.so"
},
"factory": "mxpi_modelinfer",
"next": "mxpi_imagecrop0"
},
"mxpi_imagecrop0": {
"factory": "mxpi_imagecrop",
"next": "mxpi_imageencoder0"
},
"mxpi_imageencoder0":{
"factory": "mxpi_imageencoder",
"next": "mxpi_dumpdata0"
},
"mxpi_dumpdata0": {
"factory": "mxpi_dumpdata",
"next": "appsink0",
"props": {
"location": "imageresize0-output.json",
"dumpMemoryData":"True"
}
},
"appsrc0": {
"props": {
"blocksize": "409600"
},
"factory": "appsrc",
"next": "mxpi_imagedecoder0"
},
"appsink0": {
"factory": "appsink"
}
}
}
说明:上述pipeline的流程如下
appsrc(获取图片)-->imagedecoder(图片解码)-->imageresize(图像缩放)-->modelinfer(模型推理)-->imagecrop(裁剪图片)➡encoder(编码)➡dumpdata(导出json文件)➡appsink
对于dumpdata简而言之,dumpdata将裁剪后的图片以json格式导出。
执行上述pipeline流程,获得imageresize0-output.json文件。
如何将json格式图片转化成jpg,请在评论区查看链接!
最后执行结果如下:
文章中如果有疏漏,请在评论区留言,如果你在执行上述操作中有遇到报错无法解决,也可以将你的报错分享一下
-------------------------------------------------------------------------------------------------------------前路风很大,我们一起前行!
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
蒲公英2021/05/25 04:43:001楼编辑删除举报
zch151515152022/05/25 08:34:202楼编辑删除举报