# 准备工作 ```python Python >= 3.8.0 (推荐3.10.11版本) Mysql >= 5.7.0 (可选,推荐8.0版本) Redis(可选,最新版) ``` # 下载代码 - 通过 git clone http://git.yanei-iot.com:600/rms-edition/icebox 下载到工作目录 # 后端运行 1. 创建虚拟环境python -m venv venv 2. 安装依赖环境: pip3 install -r requirements.txt 3. 启动项目: python3 main.py # 在线接口文档 访问地址:http://localhost:8080/docs (opens new window)(默认为此地址,如有修改请按照配置文件) # 项目结构 ```python ├── api // 接口文件 │ ├── sessions.py // 登录模块 │ │ ├── router.py // 子路由 │ │ ├── user.py // 用户接口 │ │ └── role.py // 角色接口 │ └── usenets.py // 组网模块 │ │ ├── router.py // 子路由 │ │ └── xx.py // XX功能 │ └── router.py // 总路由 ├── core // 核心组件 │ ├── Auth.py // JWT鉴权 │ ├── Event.py // 事件监听 │ ├── Logger.py // 日志 │ ├── Response.py // 常用返回类型封装 │ ├── Utils.py // 工具函数 │ └── Exception.py // 异常处理 ├── database // docker 启动 celery 脚本 │ ├── mysql.py // mysql数据库 │ └── redis.py // redis数据库 ├── models // 模型 │ ├── sessions.py // 登录模型文件 │ │ ├── user.py // 用户模型 │ │ └── role.py // 角色模型 │ └── usenets.py // 组网模型文件 │ └── xx.py // XX功能模型 ├── schems // 请求校验&返回格式化文件 │ ├── sessions.py // 登录schems文件 │ │ ├── user.py // 用户schems │ │ └── role.py // 角色schems │ └── usenets.py // 组网schems文件 │ └── xx.py // XXschems ├── endpoints // 该目录下存放不同设备类型的后端接口(柜体/中控/壁挂/下位机 等) | ├── cab // 柜体后端WEB接口 | ├── plane // 柜体下位机后端WEB接口 | ├── terminal // 壁挂终端后端WEB接口 | └── web // 中控平台后端WEB入口 ├── static // 静态资源文件 ├── main.py // 入口文件 └── requirements.txt // 项目环境依赖 ``` --- - 虹软的配个函数都会返回一盒状态码,要做好状态码的判断工作,确保使用正确,如果状态码 返回值不是 MOK(值为0),说明函数执行出错,可以对照 doc文档中的错误码解释对照 - 涉及到传入图片的函数操作,要确保送入的图片宽度为 4 的整数倍,如果不是则要提前做好裁剪,或者做resize操作。 - 当前默认为图片检测模式,人脸属性值中的faceID始终为空,当需要运行视频人脸检测的话可以将 初始化引擎 函数中 ASF_DETECT_MODE_IMAGE 改为 ASF_DETECT_MODE_VIDEO即代表追踪模式,这样可以减少人脸检测的消耗,并且此时返回的人脸信息中的faceID 将会有值,这在视频人脸识别中很有用,可以减少人脸重复提取识别。 - 特征值和人脸属性检测可能会失败。虹软在做特征提取和属性提取这些功能时会对人脸区域有一个判断操作,如果人脸模糊,或者提供的人脸坐标位置不对有偏差,会返回81925(人脸特征检测结果置信度低)错误码。所以一定要对返回状态码引起重视。 - 虹软有两个描述人脸检测位置和角度信息的对象`ASF_SingleFaceInfo `(单人脸信息)`ASF_MultiFaceInfo`(多人脸信息),人脸识别流程是先检测到人脸,再对人脸提取特征值信息,再用特征值信息比较相似度。虹软人脸检测时返回`ASF_MultiFaceInfo `对象(哪怕只检测到了一个人), 用于提取人脸特征信息的函数需要 输入 `ASF_SingleFaceInfo` 的对象,因此在提取特征信息时,需要根据 `ASF_MultiFaceInfo` 中的信息 构建 `ASF_SingleFaceInfo`对象来提取特征值,除了 提取特征值函数外,虹软的其他人脸属性 提取,比如:*年龄/性别识别,活体检测,人脸3D角度* 等功能都是要送入`ASF_MultiFaceInfo` 对象,但是其中活体检测又要求单张大图片中只能检测一个活体,超出返回未知,而3D角度检测单张大图时最多返回4个 人脸的3D角度值,这些地方可能不太好控制,需要注意。 static添加dictionary_files目录 .env内容 其它配置查看conf/setting.py ``` # 项目名称 PROJECT_NAME = "珠海食药" # 虹软 ARCSOFT_APP_ID = '3zedF4M48gsn1XeXaxWVR6DBEJJxDQYxgVk2B3w8KLgA' ARCSOFT_SDK_KEY = '4HKQrzqK95PrNLSB6vTFaR5GnR47REpoCikzYEd5T3Q2' # Jwt JWT_SECRET_KEY = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7" JWT_ALGORITHM = "HS256" # 药剂是否需要原路返回,(放入不同位置是否需要报警) 0不需要 1需要 BACKTRACK = 0 # 天平串口 com1 BALANCE_SERIAL = '/dev/ttyS0' # 柜体型号 9000 3000 1804 1806 1800 CLIENT_NUMBER = '9000' # 数据库连接 DB_URL = 'mysql://root:123456@192.168.2.100:3306/rms_ge_prod' # 终端ID TERMINAL_ID = "c97fe831-87bc-47eb-ab0f-88caa4593065" # 柜体大类ID DEFAULT_ARCHIVE_ID = "54a3857e-4c1d-4af7-858b-89920b7be38d" # 天平型号 旧(圆天平)old 新new BALANCE_MODEL = "old" ``` # conda pip换源 ``` conda activate rms pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ ``` 连接总库 ```angular2html DB_URL = 'mysql://root:123456@192.168.20.100:3306/rms_ge_prod' ``` # 版本说明 - 2023.12.26 版本更新 v5.0.1:fix展厅分支合并 - 2023.12.26 版本更新 v5.0.2: - 修复设为空瓶开封日期处理异常问题 - 修复定位到孔位盘点接口,对象不存在问题