Python 识别12306图片验证码物品的实现示例


Posted in Python onJanuary 20, 2020

1、PIL介绍以及图片分割

Python 3 安装:  pip3 install Pillow

1.1 image 模块

Image模块是在Python PIL图像处理中常见的模块,主要是用于对这个图像的基本处理,它配合open、save、convert、show…等功能使用。

from PIL import Image
#打开文件代表打开pycharm中的文件
im = Image.open('1.jpg')
#展示图片
im.show()

1、Crop类

拷贝这个图像。如果用户想粘贴一些数据到这张图,可以使用这个方法,但是原始图像不会受到影响。

im.crop(box) ⇒ image

从当前的图像中返回一个矩形区域的拷贝。变量box是一个四元组,定义了左、上、右和下的像素坐标。用来表示在原始图像中截取的位置坐标,如box(100,100,200,200)就表示在原始图像中以左上角为坐标原点,截取一个100*100(像素为单位)的图像。

from PIL import Image
im = Image.open("pic1.jpg")
##确定拷贝区域大小
box = (5, 41, 72, 108)
##将im表示的图片对象拷贝到region中,大小为box
region = im.crop(box)
region.show()

Python 识别12306图片验证码物品的实现示例

实战一:12306图像分割并保存

from PIL import Image
#切割图像,由于下载的图片都是有固定的位置,所以直接控制像素进行切割就行了
def cut_img(im, x, y):
  assert 0 <= x <= 3
  assert 0 <= y <= 2
  left = 5 + (67 + 5) * x
  top = 41 + (67 + 5) * y
  right = left + 67
  bottom = top + 67
  return im.crop((left, top, right, bottom))
 
if __name__ == '__main__':
  im = Image.open("./pic1.jpg")
  #控制y轴
  for y in range(2):
    #控制x轴
    for x in range(4):
      im2 = cut_img(im, x, y)
      im2.save('./images/%s_%s.png'%(y,x))

Python 识别12306图片验证码物品的实现示例

2、百度平台接口实现

2.1.平台接入:

1.打开https://ai.baidu.com/进入控制台,选择文字识别服务。

Python 识别12306图片验证码物品的实现示例

2.创建应用,如图示:

Python 识别12306图片验证码物品的实现示例

3.输入应用名称、描述,并选择应用类型,之后点击“立即创建”按钮。

Python 识别12306图片验证码物品的实现示例

 4.创建完毕,点击“返回应用列表”。

Python 识别12306图片验证码物品的实现示例

5.此处显示AK,SK,后面程序中会用到

Python 识别12306图片验证码物品的实现示例

3. 官方文档的读取

1.打开https://ai.baidu.com/docs#/OCR-API/top 文档说明

Python 识别12306图片验证码物品的实现示例

Python 识别12306图片验证码物品的实现示例

需要用到的信息有:

(1)图像识别URL: https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general

(2)Header格式:Content-Type:application/x-www-form-urlencoded

(3) 请求参数:image和multi_detect两个参数,image为图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M。

(4)返回参数:车牌颜色Color、车牌号码number等。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import base64
import requests
import os
import time
#todo:获取百度权限验证码access_token
def get_token():
  get_token_url = "https://aip.baidubce.com/oauth/2.0/token"
  params = {
    "grant_type": "client_credentials",
    "client_id": "7ax98QuWU5l2zTbaOkzvKgxE",
    "client_secret": "INugQTM2DAfNFgfxtvgR7eF8AHPFGP5t",
  }
  res = requests.get(get_token_url, params).json()
  return res["access_token"]
#todo:通过权限验证码和图片进行识别物品
def get_result(access_token,image):
  url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"
  #打开文件并进行编码
  with open(image, 'rb')as f:
    image = base64.b64encode(f.read())
  # image =
  #头部信息
  headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
  #发送数据
  data = {
    "access_token": access_token,
    "image": image
  }
  #发送请求,并返回识别数据
  res = requests.post(url, headers=headers, data=data).json()
  if res:
    result = res['result']
    return result
#todo:获取图片关键物品
def get_keywords(result):
  #按照最大匹配率进行排序,并获取左最后一个
  max_score = sorted(result,key=lambda x:x['score'])[-1]
  # print(max_score['keyword'])
  keyword = max_score['keyword']
  return keyword
 
if __name__ == '__main__':
  access_token = get_token()
  get_result(access_token,'pic1.jpg')
  datas = []
  for root,dir,files in os.walk('images'):
    for file in files:
      image = os.path.join(root,file)
      result = get_result(access_token,image)
      keyword = get_keywords(result)
      print(keyword)
      time.sleep(1)
      datas.append(keyword)
  print(datas)

Python 识别12306图片验证码物品的实现示例

总结:

  • PIL介绍以及图片分割
  • 百度AI图像识别实例搭建
  • 识别12306类别码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
Python决策树和随机森林算法实例详解
Jan 30 Python
python 实现selenium断言和验证的方法
Feb 13 Python
浅谈python中get pass用法
Mar 19 Python
python图像和办公文档处理总结
May 28 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
Python-openCV读RGB通道图实例
Jan 17 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
Mar 12 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 Python
python数字转对应中文的方法总结
Aug 02 Python
如何基于python实现归一化处理
Jan 20 #Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 #Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 #Python
python如何通过pyqt5实现进度条
Jan 20 #Python
python super用法及原理详解
Jan 20 #Python
tensorflow 变长序列存储实例
Jan 20 #Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 #Python
You might like
逐步提升php框架的性能
2008/01/10 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
介绍一下write命令
2012/09/24 面试题
区域销售经理职责
2013/12/22 职场文书
顶岗实习计划书
2014/01/10 职场文书
会计顶岗实习心得
2014/01/25 职场文书
庆元旦广播稿
2014/02/10 职场文书
请假条标准格式规范
2014/04/10 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
七年级作文之下雨天
2019/12/23 职场文书
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers