# vision-cmd-java-demo **Repository Path**: zhoujiayaoo/vision-cmd-java-demo ## Basic Information - **Project Name**: vision-cmd-java-demo - **Description**: vision-cmd命令行工具的java示例代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-16 - **Last Updated**: 2025-12-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 车牌识别SDK 这是一个基于Java的车牌识别SDK,使用JNI调用C++编写的车牌识别库。 ## 功能特点 - 支持车牌检测和识别 - 支持多种车牌颜色识别 - 支持单层和双层车牌识别 - 简单易用的API接口 ## 系统要求 - JDK 11+ - Maven 3.6+ - Windows 10/11 (64位) ## 快速开始 ### 编译项目 ```bash mvn clean package ``` ### 运行测试程序 ```bash java -jar target/vision-cmd-java-demo-jar-with-dependencies.jar <图像文件路径> ``` ## SDK使用示例 ```java // 初始化车牌识别模型 boolean success = PlateRecognizer.init("models/plate_detect.onnx", "models/plate_recognize.onnx", 0.5f, 0.5f); if (!success) { System.out.println("车牌识别模型初始化失败"); return; } try { // 获取图像尺寸 int[] dimensions = ImageUtil.getImageDimensions(imagePath); int width = dimensions[0]; int height = dimensions[1]; int channels = 3; // BGR // 将图像转换为BGR字节数组 byte[] bgrBytes = ImageUtil.imageToBGRBytes(imagePath); // 调用JNI方法识别车牌 PlateDet[] results = PlateRecognizer.detect(bgrBytes, width, height, channels); // 处理识别结果 if (results != null && results.length > 0) { for (PlateDet plate : results) { System.out.println("车牌号: " + plate.getPlate_license()); System.out.println("车牌颜色: " + plate.getPlate_color()); System.out.println("置信度: " + plate.getConfidence()); } } } finally { // 释放车牌识别模型资源 PlateRecognizer.release(); } ``` ## API接口 ### PlateRecognizer - `public static native boolean init(String detectModelPath, String recogModelPath, float conf, float nms)` - 初始化车牌识别模型 - 参数: - `detectModelPath`: 车牌检测模型路径 - `recogModelPath`: 车牌识别模型路径 - `conf`: 置信度阈值 - `nms`: 非极大值抑制阈值 - 返回: 初始化是否成功 - `public static native PlateDet[] detect(byte[] bgrImage, int width, int height, int channels)` - 识别图像中的车牌 - 参数: - `bgrImage`: BGR格式的图像字节数组 - `width`: 图像宽度 - `height`: 图像高度 - `channels`: 图像通道数(通常为3,表示BGR) - 返回: 车牌识别结果数组 - `public static native void release()` - 释放车牌识别模型资源 ### PlateDet 车牌识别结果类,包含以下字段: - `xmin`, `xmax`, `ymin`, `ymax`: 车牌区域坐标 - `label`: 车牌类型(0->单层车牌 1->双层车牌) - `confidence`: 检测置信度 - `point1_x`, `point1_y`, `point2_x`, `point2_y`, `point3_x`, `point3_y`, `point4_x`, `point4_y`: 车牌四个角点坐标 - `plate_color`: 车牌颜色(0->黑色,1->蓝色,2->绿色,3->白色,4->黄色) - `plate_license`: 车牌号 - `plate_index`: 表示一张图像里面车牌数量 ### ImageUtil 图像处理工具类,提供以下方法: - `public static byte[] imageToBGRBytes(String imagePath)` - 将图像文件转换为BGR字节数组 - 参数: - `imagePath`: 图像文件路径 - 返回: BGR字节数组 - `public static int[] getImageDimensions(String imagePath)` - 获取图像尺寸 - 参数: - `imagePath`: 图像文件路径 - 返回: 包含宽度和高度的数组 [width, height] ## 项目结构 ``` vision-cmd-java-demo/ ├── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── zhoujiayao/ │ │ └── vision/ │ │ ├── dto/ # 数据传输对象 │ │ ├── util/ # 工具类 │ │ ├── Main.java # 测试程序 │ │ └── PlateRecognizer.java # JNI接口 │ └── resources/ ├── pom.xml # Maven配置 └── README.md # 项目说明 ``` ## 注意事项 1. 确保系统已安装所需的DLL文件 2. 图像文件支持常见格式:JPG、PNG、BMP等 3. 车牌识别效果取决于图像质量和车牌清晰度 4. 使用完毕后必须调用`PlateRecognizer.release()`释放资源 ## 许可证 [MIT License](LICENSE)