|
|
|
@ -0,0 +1,101 @@
|
|
|
|
|
# MainCar - 主车远端服务程序
|
|
|
|
|
|
|
|
|
|
- 本程序用于嵌入式比赛中Android部分识别/控制相关功能的实现。
|
|
|
|
|
- 程序最初版写于2022-09
|
|
|
|
|
- 作者:UnknownObject; 技术支持:UnknownNetworkService Group
|
|
|
|
|
|
|
|
|
|
## 使用和后续开发说明
|
|
|
|
|
|
|
|
|
|
1. 本程序在开发时(2022-09)使用的SDK/NDK/Gradle版本是最新的,后续开发时注意随时更新版本并记录在本文档中:
|
|
|
|
|
- Target SDK版本:32
|
|
|
|
|
- Compile SDK版本:32
|
|
|
|
|
- Min SDK版本:26
|
|
|
|
|
- Gradle Plugin版本:7.2.1
|
|
|
|
|
- Gradle版本:7.3.3
|
|
|
|
|
- Android Studio IDE版本:2021.2.1
|
|
|
|
|
2. 本程序识别与图像处理相关功能均使用C/C++以原生库的形式实现
|
|
|
|
|
3. 部分算法/库文件引用(或改编、合并、抽取)自其他第三方库,尽可能地不要改动它们
|
|
|
|
|
4. 如有项目结构/用法上的更新,记得更新这个文档
|
|
|
|
|
|
|
|
|
|
## 项目结构简述
|
|
|
|
|
|
|
|
|
|
### 源代码
|
|
|
|
|
|
|
|
|
|
- ```cpp``` -> 所有的C/C++源代码文件
|
|
|
|
|
- ```lib_hyper_lpr``` -> 开源库HyperLPR的导出,用于进行车牌识别
|
|
|
|
|
- ```include``` -> HyperLPR头文件
|
|
|
|
|
- ```src``` -> HyperLPR源文件
|
|
|
|
|
- ```javaWarpper.cpp``` -> HyperLPR中负责提供Java接口的文件
|
|
|
|
|
- ```lib_serial_port``` -> 从Google示例中抽取的串口通信库
|
|
|
|
|
- ```opencv_libqr``` -> 从OpenCV源代码中提取并改写的多个二维码检测/分离库
|
|
|
|
|
- ```CMakeLists.txt``` -> 用于CMake编译的工程文件,记录着所有的原生库信息和如何进行编译
|
|
|
|
|
- ```car_license.h/car_license.cpp``` -> 基于模板匹配的车牌识别
|
|
|
|
|
- ```car_license_ocr.h/car_license_ocr.cpp``` -> 基于OCR的车牌识别(图像预处理部分)
|
|
|
|
|
- ```color_reco.h/color_reco.cpp``` -> 颜色识别库(仅作为形状颜色识别的子库使用,无除自检外的Java接口)
|
|
|
|
|
- ```debug_logger.h``` -> 用于调试的原生库日志再封装
|
|
|
|
|
- ```env_test.cpp``` -> NDK编译与原生OpenCV自检库,用于检查库是否正确导入及NDK动态库是否能正常加载
|
|
|
|
|
- ```image_processor.h/image_processor.cpp``` -> 形状颜色和交通标志识别的图像预处理库(仅作为子库使用,无除自检外的Java接口)
|
|
|
|
|
- ```main_car_aes.h/main_car_aes.cpp``` -> 数据处理算法库,这个库中的内容需要根据比赛时的算法现场编写
|
|
|
|
|
- ```ocr_text.h/ocr_text.cpp``` -> OCR(光学字符识别)的图像预处理库
|
|
|
|
|
- ```opencv_support.h/opencv_support.cpp``` -> 图像格式转换库,提供Android中Bitmap与OpenCV中Mat的互相转换
|
|
|
|
|
- ```public_types.h/public_types.cpp``` -> 识别中使用到的类/结构体/枚举类型的定义
|
|
|
|
|
- ```qr_code_decode.h/qr_code_decode.cpp``` -> 二维码识别的图像预处理和切分
|
|
|
|
|
- ```shape_color_reco.h/shape_color_reco.cpp``` -> 形状颜色识别
|
|
|
|
|
- ```shape_reco.h/shape_reco.cpp``` -> 形状识别库(仅作为形状颜色识别的子库使用,无除自检外的Java接口)
|
|
|
|
|
- ```traffic_light.h/traffic_light.cpp``` -> 交通灯识别
|
|
|
|
|
- ```traffic_sign.h/traffic_sign.cpp``` -> 基于模板匹配的交通标志识别
|
|
|
|
|
- ```java``` -> 所有的Java源代码文件
|
|
|
|
|
- ```com.uns.maincar``` -> 主包名
|
|
|
|
|
- ```communication``` -> 通信相关代码
|
|
|
|
|
- ```CommandEncoder``` -> 指令编码类
|
|
|
|
|
- ```CommandDecoder``` -> 指令解码类
|
|
|
|
|
- ```DataTransferCore``` -> 通信接口,定义了基本的通信函数
|
|
|
|
|
- ```SerialPortTransferCore``` -> 通信接口的实现类,实现了串口通信
|
|
|
|
|
- ```WifiTransferCore``` -> 通信接口的实现类,实现了Wifi通信
|
|
|
|
|
- ```constrants``` -> 常量和枚举类型定义
|
|
|
|
|
- ```Commands``` -> 与主车通信的指令定义
|
|
|
|
|
- ```Flags``` -> 主/从车的移动控制指令和一些其他的常量
|
|
|
|
|
- ```GlobalColor``` -> 颜色种类的枚举类型
|
|
|
|
|
- ```GlobalShape``` -> 形状种类的枚举类型
|
|
|
|
|
- ```GlobalSignType``` -> 交通标志种类的枚举类型
|
|
|
|
|
- ```cpp_interface``` -> 原生库对应的Java接口类
|
|
|
|
|
- ```hyperlpr``` -> HyperLPR的接口库
|
|
|
|
|
- ```DeepAssetUtil``` -> HyperLPR资源管理接口
|
|
|
|
|
- ```PlateRecognition``` -> HyperLPR识别接口
|
|
|
|
|
- ```CarLicense``` -> 车牌识别接口类,包含模板匹配、OCR、HyperLPR三种识别方式
|
|
|
|
|
- ```EnvTest``` -> 自检接口类,包含了全部的原生库自检
|
|
|
|
|
- ```MainCarAES``` -> 数据处理算法接口类
|
|
|
|
|
- ```OCR``` -> OCR接口类,提供静态文本识别功能并对基于OCR的车牌识别提供支持
|
|
|
|
|
- ```QRDecode``` -> 二维码识别接口类,提供单个/多个二维码识别功能
|
|
|
|
|
- ```ShapeColor``` -> 形状颜色识别接口类
|
|
|
|
|
- ```TrafficLight``` -> 交通灯识别接口类
|
|
|
|
|
- ```TrafficSign``` -> 交通标志识别接口类
|
|
|
|
|
- ```gui``` -> 图形用户界面(Activity)
|
|
|
|
|
- ```MainActivity``` -> 程序主界面和初始化
|
|
|
|
|
- ```MovementController``` -> 主车和从车的移动控制(警告:该功能并不完善,仅供调试及娱乐用途)
|
|
|
|
|
- ```PermissionGetter``` -> 外部存储权限获取
|
|
|
|
|
- ```tools``` -> 一些工具类
|
|
|
|
|
- ```ImageReleaser``` -> 车牌和交通标志的模板图释放类
|
|
|
|
|
- ```OCRDataReleaser``` -> OCR训练模型释放类
|
|
|
|
|
- ```TextFilter``` -> 文本过滤器
|
|
|
|
|
|
|
|
|
|
### 资源文件
|
|
|
|
|
|
|
|
|
|
- ```assets```
|
|
|
|
|
- ```lpr``` -> HyperLPR的资源文件
|
|
|
|
|
- ```res```
|
|
|
|
|
- ```drawable```
|
|
|
|
|
- ```cl_x.jpg``` -> 车牌识别的字符模板
|
|
|
|
|
- ```tf_x.jpg``` -> 交通标志识别的模板
|
|
|
|
|
- ```ocr_self_test.png``` -> OCR自检图片
|
|
|
|
|
- ```qr_decode_test``` -> 二维码识别自检图片
|
|
|
|
|
- ```raw```
|
|
|
|
|
- ```chi_sim.traineddata``` -> 简体中文OCR模型
|
|
|
|
|
- ```eng.traineddata``` -> 英文(和数字)OCR模型
|
|
|
|
|
|
|
|
|
|
### 第三方库
|
|
|
|
|
|
|
|
|
|
- ```libs```
|
|
|
|
|
- ```camerautil.jar``` -> 百科融创摄像头操作库
|
|
|
|
|
- ```zxingcpp-release.aar``` -> ZXing二维码识别库
|
|
|
|
|
- ```opencv``` -> OpenCV计算机视觉库
|