python对接百度云车牌识别

注册百度智能云,选择产品服务。

https://console.bce.baidu.com/
在这里插入图片描述

每天赠送200次,做开发测试足够了。
在这里插入图片描述

在应用列表复制 AppID , API Key ,Secret Key 备用。
在这里插入图片描述

SDK下载地址

https://ai.baidu.com/sdk#ocr
在这里插入图片描述

下载SDK文件,解压,复制aip文件夹到项目的根目录下备用。
在这里插入图片描述

车牌识别服务费用

在这里插入图片描述

运行代码后的效果图
在这里插入图片描述

实现代码

# 包的本质上是一个包含了一个或多个模块的文件夹,其中还包含一个特殊的文件 __init__.py
# 要注意引入第三方的包的路径: 包名.模块名 =》 aip.ocr
from aip.ocr import AipOcr

from PIL import Image, ImageDraw, ImageFont
import numpy as np
import cv2

# 修改成自己的
APP_ID = 'xxxxxxxxx'
API_KEY = 'xxxxxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxx'
# 创建客户端对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 建立连接的超时时间,单位为毫秒
client.setConnectionTimeoutInMillis(5000)
# 通过打开的连接传输数据的超时时间,单位为毫秒
client.setSocketTimeoutInMillis(5000)


""" 解决中文乱码 """
def cv2ImgAddText(img, text, left, top, textColor, textSize):
    # 判断是否OpenCV图片类型
    if (isinstance(img, np.ndarray)):
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # 创建一个可以在给定图像上绘图的对象
    draw = ImageDraw.Draw(img)
    # 字体的格式
    fontStyle = ImageFont.truetype("simsun.ttc", textSize, encoding="utf-8")
    # 绘制文本
    draw.text((left, top), text, textColor, font=fontStyle)
    # 转换回OpenCV格式
    return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)


""" 读取文件内容 """
def getFileContent(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


""" 在图片上画出方框并写上文字 """
def imgDraw(imgPath):
    image_content = getFileContent(imgPath)
    # 百度返回的结果
    res = client.licensePlate(image_content)

    if res is not None:
        car_number = res['words_result']['number']
        car_color = res['words_result']['color']
        print('车牌号码:' + car_number)
        print('车牌颜色:' + car_color)

        # 车牌位置信息
        location = res['words_result']['vertexes_location']
        start_x = location[0]['x']
        start_y = location[0]['y']
        end_x = location[2]['x']
        end_y = location[2]['y']

        # 读取图片
        img = cv2.imread(imgPath)

        # 画长方形(图像矩阵,左上角坐标,右下角坐标,颜色,线条粗细)
        cv2.rectangle(img, (start_x, start_y), (end_x, end_y), (0, 0, 255), 5)

        # 在图片上绘制文字
        txt = car_number + ' ' + car_color
        # cv2ImgAddText(图像, 文字内容, 字体左边开始位置, 字体上面开始位置, (R, G, B), 字体大小)
        img_txt = cv2ImgAddText(img, txt, start_x+50, start_x+100, (0, 255, 0), 30)

        # 显示效果
        cv2.imshow('img', img_txt)

        # 等待按任意键关闭窗口
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    else:
        print('车牌识别失败!')


if __name__ == '__main__':
    # 图片路径
    imgPath = './output/car2.jpg'
    imgDraw(imgPath)

在代码中要注意引入百度云车牌识别SDK包的路径,否则会报错:ModuleNotFoundError: No module named ‘ocr’ 或者 ImportError: attempted relative import with no known parent package
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在Plesk面板备份网站

本周有一个客户,购买Hostease的Windows虚拟主机,咨询我们的在线客服,询问Windows虚拟主机Plesk面板是否提供备份功能。我们为用户提供教程,用户很快完成了数据备份。在此,我们分享这个操作教程,希望可以对您…

差点引爆全球的核弹,深度分析XZ-Utils供应链后门投毒事件

处心积虑的投毒者蛰伏三年多,精心选择对象,通过复杂的攻击手法、专业的技战术,一步步支起一张大网,企图掌控全球主流linux发行版,一旦成功他将可以随意侵入全球绝大多数的服务器,这将是足以引爆全球的核弹危…

AI技术创业:挖掘行业解决方案、智能产品服务及教育培训的无限机遇

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

1 导入图片后 调整图片大小

导入图片 如下图,通过“文件 → 打开”在PS中导入一张图片,但是图片有点小 有三种改变大小的方法 1 只要部分图片,画布大小不变 方式:按住ctrlt,就会出现如图所示的选框 画布大小不变,但是拖动选框&…

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.9-3.11

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第三周:浅层神经网络(Shallow neural networks)3.9 神 经 网 络 的 梯 度 下 降 ( Gradient descent for neural networks)3.10(选修&#xff0…

使用Redis集合List实现消息队列

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型…

MySQL经验分享:Shell开发问题

背景 之前整理过Python连接使用MySQL的经验,链接如下: pymysql封装总结_pymysql封装类-CSDN博客 相比高级语言,Shell与MySQL开发使用相对会更麻烦一些;由于 shell是linux命令集的概称,是属于命令行的人机界面。Shel…

k8s 基础入门

1.namespace k8s中的namespace和docker中namespace是两码事,可以理解为k8s中的namespace是为了多租户,dockers中的namespace是为了网络、资源等隔离 2.deployment kubectl create #新建 kubectl aply #新建 更新 升级: 滚动升级&#x…

MS35774/MS35774A,低噪声 256 细分微步进电机驱动,可用在车灯随动,香氛机等领域

MS35774/MS35774A 是一款高精度、低噪声的两相步进 电机驱动芯片,芯片内置功率 MOSFET ,长时间工作的平均电 流可以达到 1.4A ,峰值电流 2A 。芯片集成了过温保护、欠压 保护、过流保护、短地保护、短电源保护功能。 主要特点 ◼ 2…

微信支付平台与微信服务号关联配置要点

目录 JSAPI支付 前期资料及相关准备 申请微信服务号 服务号配置要点 微信认证 基本配置 功能设置 申请微信支付号 支付号配置要点 设置操作密码 API安全 开发设置 与服务号关联 小结 JSAPI支付 我们的开发应用场景以JSAPI支付为举例,这也是常用的一…

微服务——Ribbon负载均衡

Ribbon负载均衡 1.负载均衡原理1)对LoadBalancerIntercepor进行源码跟踪:2)LoadBalancerClient继续跟入execute方法:3)负载均衡策略IRule4)总结 2.负载均衡策略自定义负载均衡策略 3.饥饿加载 在eureka中&a…

从零开始学大模型 | 你必须要知道的三种大模型架构可视化的方法!

引言 大模型架构可视化对于理解、解释和优化这些复杂模型具有重要意义和作用,主要包括以下两个方面: 提高模型透明度和可解释性通过可视化,我们能够直观地观察到模型内部的计算过程、参数分布、特征提取等,从而更好地理解模型是如…

【Node.js】-PostCSS简介

简介 PostCSS中文网地址 PostCSS是一个由JavaScript插件转换样式的工具,它的目标是探索CSS工具的新可能性,特别是在自动化和优化方面。它能够让你使用未来的CSS特性,同时优化现有的CSS代码,使其更加高效和兼容。 PostCSS本身并不…

【Dynamics 365 FO】导入汇率以及在X++代码中使用这些汇率

商务合作请加微信:DingtalkCSM 首先我们需要先创建一个汇率提供方,Dyanmics 365官方为我们提供了三个汇率提供方,直接点new然后选一个就好了。 建好汇率提供方之后我们就可以导入汇率了。 配置一下各项参数。 我们可以配置一个批处理&#x…

h5接入腾讯云人脸核身

一.自助接入步骤。 1.登录腾讯云开通人脸核身服务。 2.选择微信h5。 3.填写用户授权信息,选择对比源。 4.在调用实名核身鉴权接口时,必须传入认证人姓名和身份证号。 5.配置结果。 二.时序图 三.后端接口 service package com.ynfy.buss.exam.faceve…

PurpleKeep:提供Azure管道以创建基础设施并执行Atomic测试

关于PurpleKeep PurpleKeep是一款功能强大的安全测试自动化工具,该工具能够通过提供Azure管道以创建基础设施,并帮助广大研究人员执行Atomic测试。 随着攻击技术种类的迅速增加,以及EDR(端点检测和响应)和自定义检测规…

C语言----预处理(详解)

好了书接上回。我在讲编译与链接的时候写过宏和条件建议。我说会在下一篇博客中讲解,那么来了。今天我们来详细的讲讲预处理。宏与条件编译也在其中,那么我们现在就来好好会会这个预处理吧。 预定义符号 关于预定义符号,我暂时只知道几个。并…

Python-VBA编程500例-028(入门级)

经典二分查找算法(Classic Binary Search Algorithm)(也称为折半查找算法),是一种在有序数组中查找某一特定元素的搜索算法。它要求序列必须有序,然后通过每次比较数组中间元素与目标值,将搜索范围缩小一半,直到找到目标元素或搜索…

传输大咖20|提升效率:优化文件服务器删除大文件夹过程的策略

引文| 文件服务器在删除大文件夹时,往往会比较耗时。如果在原有线程中同步等待删除结果,那么会阻塞原有线程的运行;如果在其它线程中异步删除文件夹,则虽不阻塞原有线程的运行,但对于那些关注删除结果的用户…

每日面经分享(pytest装饰器)

pytest装饰器 a. pytest.mark.parametrize:这个装饰器用于标记测试函数,并为其提供多组参数进行参数化测试。可以使用元组、列表、字典等形式来指定参数组合。 import pytestpytest.mark.parametrize("num1, num2, expected", [(2, 2, 4), (5…