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

news2024/11/18 6:18:40

百度车牌号识别官方文档

结果视频演示

后端代码

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);
        }
    }

前端代码

<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>
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的车牌号识别功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精酿啤酒:多阶段发酵工艺的特点与优势

Fendi Club啤酒采用多阶段发酵工艺&#xff0c;这种工艺在啤酒酿造中具有显著的特点和优势。 首先&#xff0c;多阶段发酵工艺是一种复杂的酿造过程&#xff0c;它包括多个阶段的发酵和陈化过程。这种工艺需要切确控制每个阶段的时间、温度和酵母种类等参数&#xff0c;以确保…

【揭秘】企讯通106短信通知:那些你不可不知的“幕后功臣”

在日常生活中&#xff0c;你是否留意过那些来自“106”开头的短信&#xff1f;它们悄无声息地出现在你的手机收件箱&#xff0c;为你带来账单提醒、验证码、优惠活动等各类重要信息。看似平淡无奇的“106短信通知”&#xff0c;实则蕴含着丰富的科技力量与智慧结晶。今天&#…

together.ai简介

Together AI Solutions | Fastest Tools for Building Private Models for Enterprise Quickstart

【linux深入剖析】基础IO操作 | 使用Linux库函数实现读写操作 | 文件相关系统调用接口

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1.复习C文件IO相关操…

设计模式深度解析:深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 ✨

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 开篇&#xff1a; 欢迎来到设计模式的神秘…

如何在数字化转型中确保数据安全

随着科技的飞速发展&#xff0c;数字化转型已成为企业发展的必然趋势。数字化转型是指企业利用数字技术对业务流程、组织结构和商业模式进行全面创新和变革&#xff0c;以提高企业的竞争力和创新能力。然而&#xff0c;在数字化转型过程中&#xff0c;数据安全问题日益凸显&…

胖东来:超越零售巨头山姆和Costco的秘密武器

在零售业的江湖中&#xff0c;胖东来这个名字正在悄然崭露头角。3月26日&#xff0c;胖东来创始人于东来豪言壮志地表示&#xff0c;未来3-5年内&#xff0c;他的目标是超越零售巨头山姆和Costco。这不仅仅是一个口号&#xff0c;而是胖东来凭借自身实力&#xff0c;逐步迈向更…

为什么requests不是python标准库?

在知乎上看到有人问&#xff1a;为什么requests不是python标准库&#xff1f; 这确实是部分人困惑的问题&#xff0c;requests作为python最受欢迎的http请求库&#xff0c;已经成为爬虫必备利器&#xff0c;为什么不把requests直接装到python标准库里呢&#xff1f;可以省去第…

什么是公网IP?

公网IP&#xff0c;即公开网络IP地址&#xff0c;是指在互联网中公开可见、可访问的IP地址。每个设备在连接互联网时&#xff0c;都需要一个唯一的公网IP地址&#xff0c;以便其他设备可以定位并与之通信。 尽管公网IP在网络通信中具有重要作用&#xff0c;但它也带来了一些安全…

扫码登录到底是怎么实现的?

扫码登录的原理&#xff0c;其实很简单。 扫码登录的本质是&#xff0c;通过已经登录过的 App 应用&#xff0c;扫描未登录的 Web 端程序中的二维 码&#xff0c; 通过某种机制触发登录凭证的写入从而实现 Web 端自动登录的过程。 1、首先&#xff0c;在网页端打开登录页面&…

低功耗电子方案开发定制

低功耗电子方案开发定制 东莞市酷得智能科技有限公司是一家专注于为客户提供高质量解决方案的创新型科技公司。成立于2018年&#xff0c;我们的使命是通过技术创新和卓越的服务&#xff0c;帮助客户实现业务目标和价值最大化。 作为一家小而精悍的公司&#xff0c;我们拥有一支…

QML | JavaScript作用域和命名解析2

QML | JavaScript作用域和命名解析3.绑定的作用域对象 属性绑定是QML中最常见的JavaScript应用。属性绑定关联了一个JavaScript表达式的结果和对象的一个属性,该属性所归属的对象被称为绑定的作用域对象。在下面的代码中,Item对象就是一个绑定的作用域对象: ​ 绑定可以…

uniapp流浪动物救助小程序Java宠物领养小程序springboot

uniapp流浪动物救助小程序Java宠物领养小程序springboot 代码40块&#xff0c;需要的私聊 前台基于uniapp小程序 后台管理基于springbootvue前后端分离项目 开发语言&#xff1a;Java 框架&#xff1a;springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xf…

张宇1000题要刷崩溃了值不值得坚持做?

可以做1000题&#xff0c;但是复习效果可能不理想&#xff0c;因为1000题的内容难度高&#xff0c;最好基础好&#xff0c;能全程跟张宇的选择&#xff0c;否则容易浪费时间。 从题型上来看&#xff0c;1000题更注重于综合类的题目&#xff0c;题型上有些非常规。 使用1000题…

每日一题 --- 链表相交[力扣][Go]

链表相交 题目&#xff1a;面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交**&#xff1a;** 题目数据 保证 整个链式结…

【计算机操作系统】深入探究CPU,PCB和进程工作原理

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

【前端】Layui的表格常用功能,表单提交事件,表格下拉按钮点击事件,表格外的按钮点击事件

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《前端》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握…

短袖有什么牌子可以推荐?质量最好的短袖品牌推荐

天气转热&#xff0c;大家都开始给自己选一些穿着舒适且好看的短袖。但是不少朋友都应该发现&#xff0c;目前市面上的服装品牌质量参差不齐&#xff0c;而且有一些短袖穿身上还会瘙痒等情况&#xff0c;尤其是大家喜欢入手的网红或明星代言的牌子更严重。 那么短袖应该怎么选…

spring 的理解

spring 的理解 spring 是一个基础的框架&#xff0c;同时提高了一个Bean 的容器&#xff0c;用来装载Bean对象spring会帮我们创建Bean 对象并维护Bean对象 的生命周期。在spring 框架上&#xff0c;还有springCloud,spring Boot 的技术框架&#xff0c;都是以Spring为基石的sp…

centos7 使用docker安装了mongo 怎么设置远程链接,必须使用密码才能连接

docker run -d –name mongodb_container -e MONGO_INITDB_ROOT_USERNAMEroot -e MONGO_INITDB_ROOT_PASSWORDroot -e MONGO_INITDB_DATABASEdataserver -p 27017:27017 \ 无法在mongo容器里编辑文件 如果你无法直接编辑 MongoDB 容器内的配置文件&#xff0c;你可以尝试…