使用VideoPipe模仿作业帮APP做口算检查。
VideoPipe 编译/运行环境(参见视频教程)vp_data,具体参见视频教程)Python3 所需的依赖库(主要是numpy,pandas,opencv,flask,faiss等,其余按需安装即可)math_expression_check_pipeline.cpp 运行VideoPipe管道读取图片,检测/识别图片中的数学等式、判断等式是否成立,并将结果通过Socket/UDP方式发送给后台服务。math_expression_check_server.py 后台服务接收检查结果,存入数据库,并提供一个基于flask的Web UI界面供历史数据查询。clean.sh 帮助清空当前workspace下面的所有缓存数据。
math_expression_check_pipeline.cpp 生成二进制可执行程序并运行,它会实时识别数学等式、判断对错。(编译之前请先修改代码中 des_ip 和 rtmp推流地址)python3 math_expression_check_server.py 脚本, 接收检查结果,然后打开浏览器访问 http://server-ip:3636 查看口算检查记录。 (运行前,先修改脚本中 bind_ip 和 live_stream_0 的值)please run `sh clean.sh` if you want to restart sample from scratch.

layer_1 模拟获取口算答题纸图片,实际可以从网络接收数据、或使用app_app_src_node从host侧代码获取。layer_2 完成数学等式的检测&识别,创建 vp_frame_text_target。这里直接基于开源的PaddleOCR项目实现,实际应用需要自己训练OCR模型。layer_3 完成数学等式结果判断,更新 vp_frame_text_target 的 flags(yes/no/invalid),分别表示正确/错误/等式无效。这里涉及到数学表达式解析和计算。layer_4 完成结果绘制,主要将口算检查结果(vp_frame_text_target.flags)按照不同的颜色(绿色/红色/橙色)绘制到帧上。layer_5 完成数据转发,将管道中的口算检查结果(vp_frame_text_target)按自定义格式,以Socket/UDP的方式发送给Python后台服务。layer_6
screen_des_0 负责GUI输出显示,显示基本无延时。rtmp_des_0 负责rtmp编码推流,Web UI通过rtmp地址可以实时播放,有若干秒延时。vp_frame_text_target 类型。数学表达式解析和计算原理。MID节点除了有模型推理、OSD、跟踪相关类型外,还有哪些。vp_image_src_node 和 vp_app_src_node 类型。