You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
![]() |
2 years ago | |
---|---|---|
.idea | 2 years ago | |
app | 2 years ago | |
gradle/wrapper | 3 years ago | |
opencv | 2 years ago | |
.gitignore | 3 years ago | |
ReadMe.md | 3 years ago | |
build.gradle | 3 years ago | |
git push.bat | 2 years ago | |
gradle.properties | 3 years ago | |
gradlew | 3 years ago | |
gradlew.bat | 3 years ago | |
settings.gradle | 3 years ago |
ReadMe.md
MainCar - 主车远端服务程序
- 本程序用于嵌入式比赛中Android部分识别/控制相关功能的实现。
- 程序最初版写于2022-09
- 作者:UnknownObject; 技术支持:UnknownNetworkService
使用和后续开发说明
- 本程序在开发时(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
- 本程序识别与图像处理相关功能均使用C/C++以原生库的形式实现
- 部分算法/库文件引用(或改编、合并、抽取)自其他第三方库,尽可能地不要改动它们
- 如有项目结构/用法上的更新,记得更新这个文档
项目结构简述
源代码
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计算机视觉库