基于springboot+vue调用百度ai实现车牌号识别功能

百度车牌号识别官方文档

结果视频演示

后端代码

java 复制代码
private String getCarNumber(String imagePath, int count) {
        // 请求url
        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate";
        try {
            byte[] imgData = FileUtil.readFileByBytes(imagePath);
            String imgStr = Base64Util.encode(imgData);
            String imgParam = URLEncoder.encode(imgStr, "UTF-8");

            String param = "image=" + imgParam;

            String result = HttpUtil.post(url, accessToken, param);
            log.info("车牌号识别结果,result:{}", result);
            JSONObject resultObj = JSONObject.parseObject(result);
            JSONObject wordsResult = resultObj.getJSONObject("words_result");
            return wordsResult.getString("number");
        } catch (Exception e) {
            log.error("车牌号识别异常,图片地址:{}", imagePath);
            log.error(e.getMessage(), e);
            if (count >= 3) {
                log.error("车牌号识别异常,已重试{}次,强制退出", count);
                return "";
            }
            try {
                Thread.sleep(200);
            } catch (InterruptedException ex) {
                throw new RuntimeException(ex);
            }
            count ++;
            return getCarNumber(imagePath, count);
        }
    }

前端代码

html 复制代码
<el-row :gutter="10">
		<el-col :span="24">
			<el-upload
			    class="upload-demo"
			    drag
			    :action="carNumberAction"
				accept="image/*"
				list-type="picture"
				:on-success="uploadSuccess"
			  >
			    <el-icon class="el-icon--upload"><upload-filled /></el-icon>
			    <div class="el-upload__text">
			      Drop file here or <em>click to upload</em>
			    </div>
			    <template #tip>
			      <div class="el-upload__tip">
			        jpg/png files with a size less than 500kb
			      </div>
			    </template>
			  </el-upload>
		</el-col>
		<el-col :span="24">
			<p style="text-align: center; font-size: 30px; font-weight: bold;">车牌号码为:{{carNumber}}</p>
		</el-col>
	</el-row>
javascript 复制代码
let carNumber = ref('xxxx')

const uploadSuccess = async (response, uploadFile, uploadFiles) => {
	if (response.code !== 0) {
		proxy.msg.error(response.msg)
		return
	}
	carNumber.value = response.data
}

运行结果

视频演示

基于springboot+vue调用百度api的车牌号识别功能

相关推荐
總鑽風3 分钟前
[特殊字符] Spring AI Alibaba企业级智能助手落地实践
java·人工智能·spring
Flittly4 分钟前
【AgentScope Java新手村系列】(1)框架简介与环境搭建
java·spring boot·笔记·spring·ai
一条泥憨鱼7 分钟前
DTO、VO、PO、BO 到底该怎么区分?
java·数据库·状态模式·对象·印象笔记·对象类型
向日的葵0067 分钟前
vue3路由的replace属性(四)
前端·javascript·vue.js·vue路由
唐青枫8 分钟前
Java Spring Data JPA 实战指南:Repository 查询、分页与实体映射
java
2601_961845428 分钟前
2026四级作文预测26年|英语四级写作范文+模板PDF
java·数据库·spring·eclipse·pdf·tomcat·hibernate
阿猫的故乡9 分钟前
Vue模板引用和组件暴露:ref拿DOM、defineExpose调方法,案例多到眼花
前端·javascript·vue.js
薛定谔的猫-菜鸟程序员13 分钟前
从Electron到Tauri,Rust+Vue(Tauri) 实现超高性能桌面日志应用开发,以及开发避坑指南
vue.js·rust·electron
wuminyu1 小时前
Java锁机制之park与futex系统级协同机制解析
java·linux·c语言·jvm·c++
疯狂打码的少年1 小时前
编译程序与解释程序的区别
java·开发语言·笔记