调用百度的api识别车牌,没有GPU的机器,也没有大量的有标注的车牌数据,所以就只好拿别人现成的车牌识别api接口

具体的识别原理就不说了,只是调别人的接口而已,具体的调用文档百度已经给出:

http://ai.baidu.com/docs#/OCR-API/5116ac95

但是我看文档里面好像没有一个是用go调用的例子,所以就自己写了一个go调用的,发http请求到具体的api上获取参数

具体流程:

准备工作: 有一个车牌图片的url,这个url能够访问到图片,例子中给出的url是:

https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2181674788,2215933125&fm=26&gp=0.jpg

1.先访问token获取的url,传入appKey和appSecret , 获取 access_token

2.读取上述图片url地址,获取图片的二进制流信息

3.进行base64处理

4.进行urlencode处理

5.传入access_token和第4步的结果,调用车牌识别api,再根据这个token去调用车牌识别的接口

注:返回的数据是json格式,所以写了一些简单的结构体,用来json解析

用的是免费的接口,注册开发者,创建应用就能调用了,但是每天的调用有上限

运行结果:

代码:

PlateHandler.go (这里是获取一次token,用token识别一次车牌,但是token的有效期是一个月,不用每次识别都获取新的token,在开发中可以将token的信息存储起来,到期了再去获取新的token)

package mainimport ("encoding/base64""encoding/json""io/ioutil""log""net/http""net/url"
)func main() {handler := PlateHandler{}appKey := "your_appKey"secret := "your_appSecret"accessToken := handler.GetAccessToken(appKey, secret)log.Println("获取到的accessToken:",accessToken)pictureUrl := "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2181674788,2215933125&fm=26&gp=0.jpg"plate,err:=handler.GetPlate(pictureUrl,accessToken)if err!=nil{log.Fatal("获取车牌失败",err)}log.Println("获取到的车牌:",plate)
}type accessTokenInfo struct {AccessToken string `json:"access_token"`ExpiresIn   int64  `json:"expires_in""`
}type WordResult struct {Number string `json:"number"`
}
type Data struct {WordsResult WordResult `json:"words_result"`
}
type PlateHandler struct {
}func (handler *PlateHandler) GetAccessToken(appKey string, appSecret string) (accessToken string) {url := "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id="+appKey+"&client_secret="+appSecretresponse, err := http.Get(url)if err != nil {log.Fatal(err)return ""}data, err := ioutil.ReadAll(response.Body)if err != nil {log.Fatal(err)return ""}info := accessTokenInfo{}json.Unmarshal(data, &info)log.Print("请求accessToken返回的数据:", string(data))return info.AccessToken
}func (handler *PlateHandler) GetPlate(picture_url string,accessToken string) (plate string, err error) {rsp, err := http.Get(picture_url)if err != nil {log.Fatal(err)return "", err}image, _ := ioutil.ReadAll(rsp.Body)image_value, err2 := url.Parse(base64.StdEncoding.EncodeToString(image))if err2 != nil {log.Fatal(err)return "", err}to_url := "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate?access_token="+accessTokenvalues := url.Values{}values.Add("image", image_value.EscapedPath())values.Add("multi_detect", "false")rsp2, err := http.PostForm(to_url, values)defer rsp2.Body.Close()if err != nil {log.Fatal(err)return "", err}data, err := ioutil.ReadAll(rsp2.Body)if err != nil {log.Fatal(err)return "", err}log.Println("请求车牌返回的数据:",string(data))m := Data{}err = json.Unmarshal(data, &m)if err != nil {log.Fatal(err)return "", err}log.Println(m)return m.WordsResult.Number, nil
}

调用百度“车牌识别”API接口(go语言实现)相关推荐

  1. Python调用百度人脸识别API接口检测颜值

    我们今天使用Python发送网络请求到百度人脸识别API接口. 我们需要requests模块,它需要安装,代码是 pip3 install requests 注意:不好意思各位,我的配额没了!如需使用 ...

  2. 调用百度文字识别API

    调用百度文字识别API 一.实验目的 1.构建一个文字识别系统: 2.利用Python实现文字识别; 3.掌握百度AI平台的使用: 4.掌握调用百度API实现文字识别. 二.实验原理 登录百度智能云a ...

  3. 调用百度人脸识别API

    调用百度人脸识别API 用POSTMAN工具利用URL向百度智能云发送post请求 用python调用百度人脸识别 用POSTMAN工具利用URL向百度智能云发送post请求 首先在百度云平台创建一个 ...

  4. 人脸识别(2)----调用百度人脸识别API

    人脸识别(2)----调用百度人脸识别API 前言:之前人脸识别(1)中已经注册完百度智能云 .审核通过了离线人脸采集SDK.下载了安卓的slicense等.接下来就是找到并调用人脸识别的API了. ...

  5. 调用百度人脸识别API进行人脸对比 C语言

    百度人脸识别api使用是免费的,有人脸对比.人脸搜索.人脸检测与属性分析三个功能,本文写的是人脸对比.这里给出百度人脸对比api的技术文档,请点击网址https://cloud.baidu.com/d ...

  6. 微信小程序开发:调用百度文字识别API实现图文识别

    1.首先需要开通百度AI图文识别功能 登录[百度智能云],创建应用,根据需要开通功能. 创建完成后,打开应用管理,查看已创建的应用的AppID,API Key,Secret Key. 2.小程序端的开 ...

  7. python3调用百度人脸识别api检测颜值demo

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 调用主要有三步: 获取access_token 将图片处理成base64编码格式 pos ...

  8. python人脸识别百度api_python3调用百度人脸识别api检测颜值demo

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 调用主要有三步: 获取access_token 将图片处理成base64编码格式 pos ...

  9. 树莓派调用百度人脸识别API实现人脸识别

    前言 树莓派配置OpenCV,配置起来有点繁琐且耗时,调用百度智能云的人脸识别API是一个很好的解决方案 文章目录 前言 一.申请AppID.API Key和Secret Key 1.1创建应用 1. ...

最新文章

  1. 最先进的图像分类算法:FixEfficientNet-L2
  2. [3D]绘制XYZ小坐标轴
  3. 一个插件让你在 Redux 中写 promise 事半功倍
  4. 大咖云集!Kubernetes and Cloud Native Meetup 深圳站开始报名!
  5. 非刚性人脸跟踪 —— 实用工具
  6. Docker进阶-容器监控cAdvisor+InfluxDB+Granfana
  7. SAP UI5 视图控制器 View Controller 的生命周期方法 - Lifecycle methods
  8. 2.11 计算机视觉现状
  9. javascript在数组的开头推送元素[重复]
  10. HDU2041 超级楼梯【递推+水题】
  11. python结果按行输出_Python实现读取字符串按列分配后按行输出示例
  12. 关于Debug和Release之本质区别(转)
  13. Atitit.软件仪表盘(0)--软件的子系统体系说明
  14. paip.mysql 导入出错,提示语法错误.txt
  15. 联想集团大裁员:公司不是家
  16. 前端开发入门 --摘自慕克网大漠穷秋
  17. 华硕P10S-M主板组装服务器-raid配置方法
  18. 【英语学习工具】解说 LeHoCat 提供免费的 视频集制作工具 使用方法, 看视频学英语的制作工具, 制作英语教学课件的工具, 帮助自学英语(详细图文解说)
  19. 如果今天是生命里的最后一天你想做点啥?
  20. 《信号与系统》笔记-梅森公式与流程图

热门文章

  1. 如何让Wireshark支持61850 MMS报文解析
  2. 动态频谱共享(DSS)功能介绍及Log分析
  3. Linux yum 安装docker容器
  4. CAM350技巧【导入gerber文件】【单位尺度设置】【CAM测量】【操作说明与快捷键】【Cam350显示钻孔异常解决】
  5. 计算机专业英语在线测试第11章,最新章节测试答案2020学堂在线英文期刊论文写作...
  6. HeadFirst设计模式(模式总览速查)
  7. sentinel-dashboard-1.7.0.jar下载
  8. 【Python实践系列】Python学习与实践(一)
  9. 【MySQL--创建表语句】优秀的人都有段难熬的经历--MySQL创建表新手入门基础语句
  10. 5.Simulink基础建模操作——正弦余弦相关运算