Skip to main content

使用mxVersion安装时,出现libpython3.9.so.1.0报错

使用mxVersion安装时,出现libpython3.9.so.1.0报错

问题现象

使用命令**./Ascend-mindxsdk-mxvision_{version}_linux-{arch}.run --install**安装版本包时,出现如下报错:

libpython3.9.so.1.0: cannot open shared object file: No such file or directory

原因分析

Python3.9需要的so文件依赖libpython3.9.so.1.0,在编译环境中找不到。

解决方案

将Python安装路径下的libpython3.9.so.1.0对象,复制到“/usr/lib”或“/usr/lib64”下。

父主题: FAQ

mxpi_rtspsrc拉流插件运⾏偶现 BUS ERROR:XXX streamming stopped, reason error (-5) 错误

问题现象

pipeline运行过程中,mxpi_rtspsrc插件报错Internal data stream error XXX streaming stopped, reason error (-5)的错误

原因分析

主要是由于数据源网络连接异常中断、或者是连接时cpu占用较高引起的偶现错误。

解决方案

mxpi_rtspsrc插件具有重连机制,等待30秒会尝试重连,建议等待重连成功即可。

父主题: FAQ

安装7.3.0版本gcc

以下步骤请在root用户下执行。

  1. 下载gcc-7.3.0.tar.gz,下载地址为https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

  2. 安装gcc时候会占用大量临时空间,所以先执行下面的命令清空“/tmp”目录:

    rm -rf /tmp/*
  3. 安装依赖(以CentOS和Ubuntu系统为例)。

    • CentOS执行如下命令安装。

      yum install bzip2
    • Ubuntu执行如下命令安装。

      apt-get install bzip2
  4. 编译安装gcc。

    1. 进入“gcc-7.3.0.tar.gz”源码包所在目录,解压源码包,命令为:

      tar -zxvf gcc-7.3.0.tar.gz
    2. 进入解压后的文件夹,执行如下命令下载gcc依赖包:

      cd gcc-7.3.0
      ./contrib/download_prerequisites

      如果执行上述命令报错,需要执行如下命令在“gcc-7.3.0/”文件夹下下载好以下依赖包:

      wget http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
      wget http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
      wget http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
      wget http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2

      下载好上述依赖包后,重新执行以下命令:

      ./contrib/download_prerequisites

      如果上述命令校验失败,需要确保依赖包为一次性下载成功,无重复下载现象。

    3. 执行配置、编译和安装命令:

      ./configure --enable-languages=c,c++ --disable-multilib --with-system-zlib --prefix=/usr/local/gcc7.3.0
      make -j15 # 通过grep -w processor /proc/cpuinfo|wc -l查看cpu数,示例为15,用户可自行设置相应参数。
      make install

      :::note 说明 其中“--prefix”参数用于指定gcc7.3.0安装路径,用户可自行配置,但注意不要配置为“/usr/local”及“/usr”,因为会与系统使用软件源默认安装的gcc相冲突,导致系统原始gcc编译环境被破坏。示例指定为“/usr/local/gcc7.3.0”。 :::

  5. 配置环境变量(请在实际需要时再进行配置)。

    export LD_LIBRARY_PATH=/usr/local/gcc7.3.0/lib64:${LD_LIBRARY_PATH}
    export CC=/usr/local/gcc7.3.0/bin/gcc
    export CXX=/usr/local/gcc7.3.0/bin/g++
    export PATH=/usr/local/gcc7.3.0/bin:${PATH}

    其中“/usr/local/gcc7.3.0”为4.c中配置的gcc7.3.0安装路径,请根据实际情况替换。

父主题: 附录

Python依赖安装参考

介绍

目前mxVision开发套件包依赖Python 3.9,如环境中未配置Python 3.9,可参考本章节步骤安装依赖(以root用户安装Python 3.9.2为例)。

操作步骤

  1. 安装Python 3.9.2依赖库。

    apt-get install -y build-essential gcc g++ make cmake zlib1g zlib1g-dev libsqlite3-dev openssl libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3 libopenblas-dev
  2. 下载Python 3.9.2源码安装包。

    wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz
  3. 解压Python 3.9.2安装包。

    tar -xzvf Python-3.9.2.tgz
  4. 编译安装Python 3.9.2。

    cd Python-3.9.2 && ./configure --prefix=/usr/local/python3.9.2 --enable-shared && make -j8 && make install
  5. 拷贝libpython3.9.so.1.0到系统路径。

    cp /usr/local/python3.9.2/lib/libpython3.9.so.1.0 /usr/lib
  6. 设置环境变量。

    export LD_LIBRARY_PATH=/usr/local/python3.9.2/lib:$LD_LIBRARY_PATH
    export PATH=/usr/local/python3.9.2/bin:$PATH

:::note 说明 若源码方式安装完Python 3.9.2后,pip3工具无法使用,请参见源码方式安装完Python 3.9.2后,pip3工具无法使用解决。 :::

父主题: 附录

日志配置文件

日志框架基于glog实现,提供配置文件设置日志基本参数。

日志配置文件(logging.conf)

## MindX SDK configuration file

## Program name
## 项目工程名称,任意指定
program_name=mindx_sdk

## log output directory, create logs directory before use
## 日志输出文件夹,若是绝对路径,则会输出在该绝对路径下,该绝对路径只能设置在用户主目录下。若非绝对路径,则会输出在用户主目录下的/log/mindxsdk 与log_dir的拼接路径下。
log_dir=logs

## log file basefile
## 日志文件名前缀
base_filename=mxsdk.log.

## time to buffer the log in seconds,0 means write to file immediately
## 设置日志输出的周期(以秒为单位),0表示立即输出
logbufsecs=0

## will output to file, where level >= global_level,default is 0
## Log level: -1-debug,0-info
## 输出级别大于等于该数值的日志到文件,默认为0
global_level=0

## will output to stderr, where level >= console_level,default is 2
## Log level: -1-debug,0-info, 1-warn, 2-error, 3-fatal
## 输出级别大于等于该数值的日志到stderr,默认为2
console_level=2

## max log size, unit is MB, max_log_size must be an integer, default is 100. 1 <= value <= 1024
## 日志文件size最大值,单位为MB,max_log_size的值必须为大于等于1的正整数,默认值为100
max_log_size=100

## rotate time of log switch: 7 days(default), 1<= value <= 1000
## 日志文件天数回滚开关:默认值7天
## 日志文件天数回滚基于单一进程进行统计(只统计当前进程的日志);
rotate_day=7

## rotate file number of log switch: 50 (default, For each log level). 1 <= value <= 500
## 日志文件个数回滚开关:默认值50个(日志各个级别)
## 日志文件个数回滚基于单一进程进行统计(只统计当前进程的日志);
## 只有在程序正常退出时,才能保证日志文件的数量和rotate_file_number的值一致,用户异常退出程序时,实际日志数量可能会超过rotate_file_number。
rotate_file_number=50

## frequency of printing each log, frequency value must be an integer, defualt value is 1. 1 <= value <= 10000
## 每条日志的打印频率,参数值必须为整型,默认值为1,参数值填写范围在1~10000之间。
flow_control_frequency=1

父主题: 附录

Metadata proto文件

:::note 说明 “opensource/bin/”目录下的protoc为Google Protobuf的编译工具,若用户在插件中使用了自定义的数据结构,protoc可以将其.proto文件生成相应的接口代码。 :::

Google Protobuf数据结构定义文件(MxpiDumpData.proto)

syntax = "proto3";

package MxTools;

message MxpiDumpData
&#123;
Buffer buffer = 1;
repeated MetaData metaData = 2;
&#125;

message Buffer
&#123;
bytes bufferData = 1;
&#125;

message MetaData
&#123;
string key = 1;
string content = 2;
string protoDataType = 3;
&#125;

Google Protobuf数据结构定义文件(MxpiDataType.proto)

syntax = "proto3";

package MxTools;

// 用于存放视频和图像帧,包含帧信息,数据信息。
message MxpiFrame
&#123;
MxpiFrameInfo frameInfo = 1;
MxpiVisionList visionList = 2; // 为了和VPC统一,使用list。
&#125;

message MxpiFrameInfo // 帧信息
&#123;
uint32 channelId = 1;
uint32 frameId = 2;
bool isEos = 3;
&#125;

message MxpiVisionList // 视频、图像数据列表
&#123;
repeated MxpiVision visionVec = 1;
&#125;

message MxpiVision // 视频、图像数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1; //存放插件信息的vector
MxpiVisionInfo visionInfo = 2;
MxpiVisionData visionData = 3;
&#125;

message MxpiMetaHeader // 数据结构头,用于序列化
&#123;
string parentName = 1; //此变量在后续版本中将会被弃用,请使用“dataSource”
int32 memberId = 2; //MxpiVisionList中对应存放的MxpiVision索引
string dataSource = 3; //依赖数据的索引名,通过该索引获取依赖的元数据
&#125;

enum MxpiMemoryType &#123;
MXPI_MEMORY_HOST = 0;
MXPI_MEMORY_DEVICE = 1;
MXPI_MEMORY_DVPP = 2;
MXPI_MEMORY_HOST_MALLOC = 3;
MXPI_MEMORY_HOST_NEW = 4;
&#125;

enum MxpiDataType &#123; // 数据类型,包括8位无符号整型类型和32位浮点类型
MXPI_DATA_TYPE_UINT8 = 0;
MXPI_DATA_TYPE_FLOAT32 = 1;
&#125;
message MxpiVisionInfo // 视频、图像描述信息
&#123;
uint32 format = 1; //描述图像的格式,具体请参见DvppWrapper.h的MxbasePixelFormat
uint32 width = 2;
uint32 height = 3;
uint32 widthAligned = 4;
uint32 heightAligned = 5;
uint32 resizeType = 6; //描述缩放类型,具体请参见MxPluginsUtils.h的RESIZETYPE
float keepAspectRatioScaling = 7; //缩放比例,取值在[1/32, 16]
repeated MxpiVisionPreProcess preprocessInfo = 8;
&#125;

message MxpiVisionPreProcess // 图像前处理信息。例如图像宽高、抠图坐标、贴图坐标
&#123;
uint32 widthSrc = 1;
uint32 heightSrc = 2;
uint32 cropLeft = 3;
uint32 cropRight = 4;
uint32 cropTop = 5;
uint32 cropBottom = 6;

uint32 pasteLeft = 7;
uint32 pasteRight = 8;
uint32 pasteTop = 9;
uint32 pasteBottom = 10;

uint32 interpolation = 11;
string elementName = 12;
&#125;
message MxpiVisionData // 视频、图像数据内容
&#123;
uint64 dataPtr = 1; // 视频、图像内存指针
int32 dataSize = 2;
uint32 deviceId = 3;
MxpiMemoryType memType = 4;
uint64 freeFunc = 5; // 视频、图像内存销毁函数
bytes dataStr = 6; // bytes数据类型 序列化成JSON时会自动进行base64编码
MxpiDataType dataType = 7;
uint64 matPtr = 8;
&#125;
message MxpiObjectList // 目标列表
&#123;
repeated MxpiObject objectVec = 1;
&#125;

message MxpiObject // 目标数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
float x0 = 2;
float y0 = 3;
float x1 = 4;
float y1 = 5;
repeated MxpiClass classVec = 6; // 类别信息数据结构,此处“MxpiMetaHeader”无效
MxpiImageMask imageMask = 7; // 图像语义分割数据信息
&#125;

message MxpiImageMaskList // 图像语义分割数据列表
&#123;
repeated MxpiImageMask imageMaskVec = 1;
&#125;

message MxpiImageMask // 图像语义分割数据信息。例如数据的类别、形状、类别信息
&#123;
repeated MxpiMetaHeader headerVec = 1;
repeated string className = 2;
repeated int32 shape = 3;
int32 dataType = 4;
bytes dataStr = 5;
&#125;
message MxpiClass // 类别信息数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
int32 classId = 2;
string className = 3;
float confidence = 4;
&#125;

message MxpiClassList // 类别信息列表
&#123;
repeated MxpiClass classVec = 1;
&#125;

message MxpiAttributeList // 属性信息列表
&#123;
repeated MxpiAttribute attributeVec = 1;
&#125;

message MxpiAttribute // 属性信息数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
int32 attrId = 2;
string attrName = 3;
string attrValue = 4;
float confidence = 5;
&#125;

message MxpiTrackLetList
&#123;
repeated MxpiTrackLet trackLetVec = 1;
&#125;

message MxpiTrackLet
&#123;
repeated MxpiMetaHeader headerVec = 1;
uint32 trackId = 2;
uint32 age = 3; // 目标“存活”帧数
uint32 hits = 4; // 目标被成功匹配帧数
int32 trackFlag = 5; // 状态
&#125;

message MxpiTensorPackageList // 模型Tensor组合列表
&#123;
repeated MxpiTensorPackage tensorPackageVec = 1;
&#125;

message MxpiTensorPackage // 模型Tensor组合数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
repeated MxpiTensor tensorVec = 2;
&#125;

message MxpiTensor // 模型Tensor数据结构
&#123;
uint64 tensorDataPtr = 1; // Tensor内存指针
int32 tensorDataSize = 2;
uint32 deviceId = 3;
MxpiMemoryType memType = 4;
uint64 freeFunc = 5; // Tensor内存销毁函数
repeated int32 tensorShape = 6; // Tensor维度
bytes dataStr = 7;
int32 tensorDataType = 8;
&#125;

message MxpiFeatureVectorList // 特征向量列表
&#123;
repeated MxpiFeatureVector featureVec = 1;
&#125;

message MxpiFeatureVector // 特征向量数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
repeated float featureValues = 2;
&#125;

message MxpiPoseList // 人体姿态估计数据列表
&#123;
repeated MxpiPose poseVec = 1;
&#125;

message MxpiPose // 人体姿态估计数据信息
&#123;
repeated MxpiMetaHeader headerVec = 1;
repeated MxpiKeyPoint keyPointVec = 2;
float score = 3;
&#125;

message MxpiKeyPoint // 人体关键点数据信息
&#123;
float x = 1;
float y = 2;
int32 name = 3;
float score = 4;
&#125;
message MxpiKeyPointAndAngleList // 关键点和角度信息列表
&#123;
repeated MxpiKeyPointAndAngle keyPointAndAngleVec = 1;
&#125;

message MxpiKeyPointAndAngle
&#123;
repeated MxpiMetaHeader headerVec = 1;
repeated float keyPointsVec = 2; // 目标对应的五个关键点信息
float angleYaw = 3; // 偏航角
float anglePitch = 4; // 俯仰角
float angleRoll = 5; // 横滚角
&#125;
message MxpiTextObjectList // 文本目标数据列表
&#123;
repeated MxpiTextObject objectVec = 1;
&#125;

message MxpiTextObject // 文本目标数据信息。例如文本目标框坐标坐标、置信度、检测文本
&#123;
repeated MxpiMetaHeader headerVec = 1;
float x0 = 2;
float y0 = 3;
float x1 = 4;
float y1 = 5;
float x2 = 6;
float y2 = 7;
float x3 = 8;
float y3 = 9;
float confidence = 10;
string text = 11;
&#125;

message MxpiTextsInfoList // 文本生成数据列表
&#123;
repeated MxpiTextsInfo textsInfoVec = 1;
&#125;

message MxpiTextsInfo // 文本生成数据信息
&#123;
repeated MxpiMetaHeader headerVec = 1;
repeated string text = 2;
&#125;
message MxpiCustomDataList
&#123;
repeated MxpiCustomData dataVec = 1;
&#125;
message MxpiCustomData
&#123;
repeated MxpiMetaHeader headerVec = 1;
map<string, string> map = 2;
&#125;

OSD protobuf 数据结构定义文件(MxpiOSDType.proto)

syntax = "proto3";

package MxTools;

import "MxpiDataType.proto";

message MxpiOsdInstancesList //目标或者分类信息Osd列表
&#123;
repeated MxpiOsdInstances osdInstancesVec = 1;
&#125;

message MxpiOsdInstances //Osd属性描述信息数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
repeated MxpiOsdText osdTextVec = 2; //文字描述
repeated MxpiOsdLine osdLineVec = 3; //线条描述
repeated MxpiOsdRect osdRectVec = 4; //矩形框描述
repeated MxpiOsdCircle osdCircleVec = 5; //画圆描述
&#125;

message MxpiOsdText //文字属性数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
string text = 2; //要添加的文字内容
int32 x0 = 3; //添加文字原点坐标的X坐标
int32 y0 = 4; //添加文字原点坐标的Y坐标
int32 fontFace = 5; //文字的字体类型
double fontScale = 6; //文字的字体大小
bool bottomLeftOrigin = 7; //取值为true,原点坐标为文字左上角坐标,false为左下角坐标
MxpiOsdParams osdParams = 8; //Osd公有属性实例对象
bool fixedArea = 9; //缩放后,Osd属性描述信息是否按照原图等比例缩放
&#125;

message MxpiOsdLine //线条属性数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
int32 x0 = 2; //线条左上角X坐标
int32 y0 = 3; //线条左上角Y坐标
int32 x1 = 4; //线条右下角X坐标
int32 y1 = 5; //线条右下角Y坐标
MxpiOsdParams osdParams = 6; //Osd公有属性实例对象
&#125;

message MxpiOsdRect //矩形框属性数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
int32 x0 = 2; //矩形框左上角X坐标
int32 y0 = 3; //矩形框左上角Y坐标
int32 x1 = 4; //矩形框右下角X坐标
int32 y1 = 5; //矩形框右下角Y坐标
MxpiOsdParams osdParams = 6; //Osd公有属性实例对象
bool fixedArea = 7; //缩放后,Osd属性描述信息是否按照原图等比例缩放
&#125;

message MxpiOsdCircle //画圆属性数据结构
&#123;
repeated MxpiMetaHeader headerVec = 1;
int32 x0 = 2; //画圆左上角X坐标
int32 y0 = 3; //画圆左上角Y坐标
int32 radius = 4; //画圆的半径
MxpiOsdParams osdParams = 5; //Osd公有属性实例对象
&#125;

message MxpiOsdParams //Osd公有属性数据结构
&#123;
uint32 scalorB = 1; //颜色B通道值,取值范围0-255
uint32 scalorG = 2; //颜色G通道值,取值范围0-255
uint32 scalorR = 3; //颜色R通道值,取值范围0-255
int32 thickness = 4; //粗细大小
int32 lineType = 5; //线条类型
int32 shift = 6; //缩放参数
&#125;

父主题: 附录

在线提单