念数字python_我是怎样利用python PIL将图片数字读出来的?
一、需求来源
因为在编写爬虫程序时,经常会遇到,电话号码使用图片格式显示。程序无法直接拿到其中的电话号码。
二、解决思路
1、拿到该网站从0-9的数字的图片,并将每个图片转换成相应的向量。
2、需要使用python读取图片。
3、将读取出来的图片分割开来。
4、将分割出来的数字图片和已经转换成向量的的图片相比较。如果相等就返回该数值。
三、用到的模块
1、urllib2
2、Image
3、cStringIO
4、os
四、上代码
# -*- coding:utf-8 -*-
import os
from PIL import Image
import cStringIO
import urllib2
class Number2vector(object):
def __init__(self):
#在构造函数时就拿到{'数字':'向量'}的字典。
numdict = self.get_numberdict()
file_path = "phoneimage/phone3.png"
# 这里是将之前已经转换为向量的数字拿到一个字典里面,方便之后的比对。
def get_numberdict(self):
numdict = dict()
path = "numbertxt"
file_list = os.listdir(path)
for filex in file_list:
filex = path + '/' + filex
f = open(filex)
c = f.read()
key = filex.split('/')[1].split('.')[0].replace('m', '')
numdict[key] = c
return numdict
#将图片转换为用0和1表示的字符串
def image2text(self, im):
width = im.size[0]
height = im.size[1]
tmstr = ""
for i in range(0,width):
for j in range(0,height):
cl=im.getpixel((i,j))
if(cl==0):
#黑色
tmstr = tmstr + "1"
else:
tmstr = tmstr + "0"
tmstr = tmstr + "\n"
return tmstr
# 用来比较向量是否相等。如果相等则返回该数字
def get_number(self, im):
text = self.image2text(im)
numdict = self.get_numberdict()
keys = list()
vals = list()
for k, v in numdict.items():
keys.append(k)
vals.append(v)
if text in vals:
i = vals.index(text)
return keys[i]
else:
return None
def splitimage(self,file_path):
region_list = list()
# 判断该文件是本地文件还是web文件。
if "http://" in file_path or "https://" in file_path:
image = cStringIO.StringIO(urllib2.urlopen(file_path).read())
im = Image.open(image)
else:
im = Image.open(file_path)
width = im.size[0]
i = 0
while i < width - 9:
box = (i, 0, i+9, 25)
region = im.crop(box)
i += 9
region_list.append(region)
return region_list
def getimagefromweb(file_path):
file = cStringIO.StringIO(urllib2.urlopen(file_path).read())
def do_main(self, file_path = "phoneimage/phone3.png"):
region_list = self.splitimage(file_path)
strx = ""
for r in region_list:
tmpnum = self.get_number(r)
if tmpnum != None:
strx = strx + tmpnum
return strx
file_path = "这里填写你的图片路径"
n = Number2vector()
print n.do_main(file_path)
五、备注
在之前准备工作中,我为了拿到准确的{"数字":"向量"}的键值对。需要多次进行比较。并且要拿到该网站中从0-9所有的数字。
念数字python_我是怎样利用python PIL将图片数字读出来的?相关推荐
- python对excel筛选提取文本中数字_详解利用python提取pdf文本数字
之前也不乏介绍过关于excel的内容,日常工作应用,除了excel,pdf也是经常使用的一种,关于pdf的文本提取,下面也来详细介绍~ 说明:从pdf文件中提取其他类型的数据,如文本或图像.将说明从p ...
- python提取pdf的数字_详解利用python提取pdf文本数字
之前也不乏介绍过关于excel的内容,日常工作应用,除了excel,pdf也是经常使用的一种,关于pdf的文本提取,下面也来详细介绍~ 说明:从pdf文件中提取其他类型的数据,如文本或图像.将说明从p ...
- 教你一招利用Python快速去除图片水印
大家好,我是IT界搬运工. 相信大家都有在网上下载好图片但是有水印的烦恼,那么问题就来了:看到心爱的图片想要"占为己有".怎么把图片上的水印去除呢?今天我就来教你一招利用Pytho ...
- 一、python+PIL给图片添加文字水印
python+PIL给图片添加文字水印 最近需要给同一张图片添加不同的水印保存,在网上搜了很多,也不是很有效,在这儿记录一下我运行正确无误的代码,方便自己以后查看: #读取文件每一行,写到图片中间位置 ...
- 苹果手机怎么学python_我是如何在 Python 内使用深度学习实现 iPhone X 的 FaceID 的...
雷锋网按:本文为 AI 研习社编译的技术博客,原标题 How I implemented iPhone X's FaceID using Deep Learning in Python,作者为 SHI ...
- 利用Python脚本给图片批量添加文字水印
引言:本人从小白自学python,为了测试基础学习效果,增加一定的促进,想通过参加全国计算机等级考试二级python来检验基础学习情况.在学习过程中,会将该过程编写的python小程序题目在此发表,希 ...
- Python PIL调整图片大小、尺寸和转换图片格式,removebg改变图片背景、透明化处理
1.简介:Python利用PIL Image可以调整图片尺寸(宽度和高度).图片大小和转换图片格式,Python利用removebg可以改变图片背景.透明化处理. 2.特点:简单方便.快速. 3.适用 ...
- python数字判断规则_判断Python输入是否为数字、字符(包括正则表达式)-阿里云开发者社区...
当键入字符串时候,我们自己就可以判断了! 一:我们在程序把输入的数字当字符串处理 import re print("我现在要写一个文件数字猜游戏数字游戏:") temp=input ...
- python数字形式转换_在Python中将字母转换为数字
在Python中将字母转换为数字 如何完成以下步骤? characters = ['a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''t''u ...
最新文章
- bzoj 4602: [Sdoi2016]齿轮
- 数学课本上的几大变态之处
- 数字转字符函数_Excel之文本函数CONCATENATE/TEXT/LEFT/MID/RIGHT/FIND/LEN
- Spring 4.1和Java 8:java.util.Optional
- oracle11g dataguard物理备库搭建
- ICCV 2019 | 厦大提出快速NAS检索方法,四小时搜索NN结构
- 裁员下老公老婆的对话
- 洛谷 P3110 [USACO14DEC]驮运Piggy Back spfa
- Excel的25个知识~边看边操作
- Opencv入门第一课打开窗口
- java便签_Java版本便签纸小项目
- 计算机应用1.2版,201303《计算机应用基础》在线作1_2.doc
- 神经网络模型结果怎么看,神经网络模型怎么评估
- 运维标准化与流程化建设深度指南(转)
- c语言%.6s和%6s的差别,iPhone 6s与iPhone 7的差别 看完全懂了!
- android扫雷需求分析,扫雷需求分析.doc
- Git问题:右键没有Git Bash Here的解决办法
- MMDetection2.17-权重模型转推理模型(pth转onnx)详细步骤及前向推理(Win10、Linux均适用)
- Lattice FPGA ecp5u mico32软核使用
- 大数据时代的知识图谱
热门文章
- 利用lrz、lsz工具在linux与windows之间传输文件
- Dos批处理常用命令大全扫盲篇
- 求最大素数的c语言,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
- php glod,基于PHP的黄金价格示例代码-六派数据
- json带斜杠java,带斜杠的json解析
- android自定义push通知_android通过自定义toast实现悬浮通知效果的示例代码
- 沈阳工程 c语言题库,2017年沈阳航空航天大学航空航天工程学部823C语言程序设计考研仿真模拟题...
- Codeforces - 961E Tufurama
- [转载]宇宙文明等级的划分标准
- [LeetCode] 86. Partition List Java