博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
验证码识别(最简单之印刷体数字)
阅读量:5935 次
发布时间:2019-06-19

本文共 2188 字,大约阅读时间需要 7 分钟。

# -*- coding: utf-8 -*-  import numpyfrom PIL import Imageimage = Image.open("5.gif")heigh = image.size[0]weigh = image.size[1]checkbox = ([-1,0],[0,1],[1,0],[0,-1])#降噪除去一个点def clearpoint(im):   for i in range(heigh):       for j in range(weigh):            if im.getpixel((i,j))==0:                 result = 0                 for count in range(4):                     if im.getpixel((i+checkbox[count][0],j+checkbox[count][1])):result+=1                 if result == 4:                     im.putpixel((i,j),255)   return imbox = numpy.array([0,0,13,20])imagenumsit = []   #chun cun 5 ge shuziimagenumbit = []imagedoublevalue = image.convert("1")imagedoublevalue = clearpoint(imagedoublevalue)resultnum = 0for i in range(5):    imagenum = imagedoublevalue.crop(box)    imagenumsit.append(imagenum)    box[0]=box[2]    box[2]+=9for i in range(5):    w = imagenumsit[i].size[0]    h = imagenumsit[i].size[1]    vector = [0]*w    imagenumbitsingle = numpy.tile(vector,(h,1))    for x in range(h):       for y in range(w):           if imagenumsit[i].getpixel((y,x)) == 0:imagenumbitsingle[x][y]=1    imagenumbit.append(imagenumbitsingle)imagenumsit[1].show()print imagenumbit[1]

 代码用来分隔图像并且把图像二值化,分别保存。

python代码实现记录:

  • 对Pillow库的使用,基本图像操作。
  • image.size[0]表示图像的像素高度,类似于矩阵的表示方式,image.size[1]为图像的长度。
  • image.getpixel((i,j)) ,对于图像(i,j)坐标的像素取颜色值,因为这里已经做过二值化,所以黑色值为0,白色值为255,降噪函数用搜索,把单独(周围都是白色像素点)黑色像素点去除掉
  • image.convert(),用于转换RGB图像,PIL中所有格式的图像open()后都是RGB图像或者L图像(灰度图),共可以转化为九种模式图像:1,L,P,RGB,RGBA,CMYK,YCbCr,I,F
  1. “1”:二值化图像,非黑即白,0表示黑,255表示白
  2. “L”:灰度图像,0-255表示不同灰度,转换公式:L=R * 299/1000 + G * 587/1000+ B * 114/1000
  3. “P”:8bit彩色图像
  4. “RGBA”:32bit彩色图像,其中24bit通道表示红绿蓝,剩下8bit表示透明度(alpha),alpha默认值:255(完全不透明)
  5. “CMYK”:32bit彩色图像,其中多出8bit来表示黑色油墨度,四种标准颜色是:C:Cyan = 青色,又称为‘天蓝色’或是‘湛蓝’M:Magenta = 品红色,又称为‘洋红色’;Y:Yellow = 黄色;K:Key Plate(blacK) = 定位套版色(黑色),K默认值:0
  6. “YCbCr”:24bit彩色图像:Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量,转换公式Y= 0.257*R+0.504*G+0.098*B+16;Cb = -0.148*R-0.291*G+0.439*B+128;Cr = 0.439*R-0.368*G-0.071*B+128,
  7. “I”:32bit灰度图像,其中每个像素用0-255色度表示,转换公式:I = R * 299/1000 + G * 587/1000 + B * 114/1000
  8. “F”:32bit浮点灰度图像,其中每个像素用0-255色度表示,转换公式:F = R * 299/1000+ G * 587/1000 + B * 114/1000

 

转载于:https://www.cnblogs.com/tiemuer/p/7875513.html

你可能感兴趣的文章
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
tomcat 8.0虚拟机配置文档
查看>>
pxc群集搭建
查看>>
JS中加载cssText延时
查看>>
常用的脚本编程知识点
查看>>
XILINX_zynq_详解(6)
查看>>
计算机网络术语总结4
查看>>
新手小白 python之路 Day3 (string 常用方法)
查看>>
soapUI的简单使用(webservice接口功能测试)
查看>>
框架 Hibernate
查看>>
python-while循环
查看>>
手机端上传图片及java后台接收和ajaxForm提交
查看>>
【MSDN 目录】C#编程指南、C#教程、ASP.NET参考、ASP.NET 4、.NET Framework类库
查看>>
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
(原創) 如何建立一个thread? (OS) (Linux) (C/C++) (C)
查看>>
<气场>读书笔记
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>