前言

今天看了看KNN算法的手写数字识别,想着自己能不能创造个数据,试试看能不能识别。然后我去网上百度如何获得图片的01文本。发现很多代码效果不是很好,然后就有了今天这篇博客。

本文需要安装pillow库,安装的命令很简单。

cmd模式
pip install pillow
conda模式
conda install -n 环境名 pillow

正文

首先,我们知道图片的RGB每个的值最大都是255。然后PIL库的Image库有个函数getpixel(),这个函数会返回当前图片像素点的像素值,返回值为一个列表。

getpixel()的使用方法

我们可以看到源码中注释,关于返回值的部分:
像素值。如果图像是多层图像,则此方法返回一个元组

from PIL import Image
im = Image.open('8_0.jpg')
# 获取像素列表
color = im.getpixel((j, i))
print(color)

我们可以看到输出会是一个tuple。

(255, 255, 255)

获得图片的01/二级制文本

如果我们有一个32像素X32像素的图片。如下:

我们可以使用下面的代码:

from PIL import Image
# 打开
im = Image.open('8_0.jpg')width = im.size[0]
height = im.size[1]fh = open('8_0.txt', 'w')
print(width, height)
for i in range(height):for j in range(width):# 获取像素点颜色color = im.getpixel((j, i))colorsum = color[0] + color[1] + color[2]if (colorsum <= 383):fh.write('1')else:fh.write('0')fh.write('\n')
fh.close()

文本:

00000000000000000000000000000000
00000000000000011110000000000000
00000000000011111111100000000000
00000000001111111111111000000000
00000000011111111111111000000000
00000000111110000000111100000000
00000001111000000000011100000000
00000001110000000000011110000000
00000001110000000000011110000000
00000011110000000000011110000000
00000011110000000000111100000000
00000001111000000000111100000000
00000001111111000001111000000000
00000000111111111111110000000000
00000000001111111111100000000000
00000000000001111111100000000000
00000000000111111111110000000000
00000000001111110011110000000000
00000000011111000000111000000000
00000000111100000000111000000000
00000000111000000000011100000000
00000001110000000000011100000000
00000001110000000000011100000000
00000001110000000000011100000000
00000001111000000000111000000000
00000000111111111111111000000000
00000000111111111111110000000000
00000000001111111111100000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000

Notes:
1、如果是做手写数字识别的小伙伴,建议使用PS建立32×32的图片,如果直接用画图或者截图之类的方法,获取的像素会比较大,导致运算量比较大,还可能和你的教程的代码种的规格不一样,需要修改,很麻烦。
2、效果不好可能的原因。其实我的代码和网上大部分都相似,但是我只修改了一个地方,就是判断colorsum的值,经过输出求证可能得出,图片中为黑色的地方,基本上不会是0,而是位于0~300之间,这里我使用了255*3/2≈383,这样判断的结果就比较好了。当然如果是其他的图像使用我的383可能就不太好了,这时候就需要适当修改数值了。

使用PIL库获取图片的二进制/01文本相关推荐

  1. 通过Python的PIL库给图片添加马赛克

    文章目录 前言 一.Pillow是什么? 二.安装PIL库 三.查看PIL库版本 四.使用方法 1.引入库 2.定义图片路径 3.打开需要打马赛克的图片 4.获取图片尺寸 5.创建一个新的图片对象 6 ...

  2. python自带的PIL库扩展图片大小给图片加上文字描述

    利用python自带的PIL库扩展图片大小给图片加上文字描述.大多都是库函数调用,只是给定图片宽度后计算文字所需行数的代码需要写. 代码比较丑,but it works. #!/usr/bin/env ...

  3. python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...

    前言 最近的一个项目中需要在图片上添加文字,使用了OpenCV,结果发现利用opencv给图像添加文字有局限.可利用的字体类型比较少,需要安装Freetype扩展,比较复杂.而且不能用putText函 ...

  4. python 用PIL库缩放图片并保存

    python 用PIL库缩放图片并保存 PIL库安装 pip install pillow 单个图片缩放 from PIL import Imageimagepath = r'.\img\number ...

  5. 通过Python的PIL库给图片添加图片水印

    文章目录 前言 一.素材准备 1.原图 2.水印图 二.使用PIL库给图片添加图片水印 1.引入库 2.定义图片路径 3.打开原图 4.打开水印图片 5.计算水印图片大小 6.计算原图大小 7.调整水 ...

  6. Python 技术篇-用PIL库修改图片透明度实例演示,改变png图片色道为RGBA、RGB

    PIL 库可以设置图片透明度. pip install pillow 安装了 pillow 库后就可以使用 PIL 库了. 我们都知道,图片是由无数个点组成的,300x300 像素,就是 9 万个点. ...

  7. Python 技术篇-用PIL库旋转图片、改变图像尺寸

    首先需要安装 PIL 库,直接pip install pillow就好了. 旋转包括 transpose() 和 rotate() 两种方式. resize((a, b)) 是用来改变图片尺寸的. # ...

  8. pil库修改图片大小_python 利用PIL库进行更改图片大小的操作

    python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...

  9. python PIL库将图片转换成字符画

    将图片转换成文本文件查看形式 准备 源码 原始图像 生成文本文件后显示的结果 注意事项 准备 语言:python 环境:PIL库,准备好图片素材 源码 from PIL import Image as ...

最新文章

  1. 独家 | 利用AI进行高精度图像编辑︰EditGAN(附链接)
  2. 「译」有限状态机在 CSS 动画中的应用
  3. 4G网络在物联网应用中的重要性
  4. 解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
  5. 雷军:有人说我写的代码像诗一样优雅~
  6. vector的基本用法 (详解 + 代码演示)
  7. Ceph (1) - 安装Ceph集群方法 1:使用ceph-deploy安装Nautilus版Ceph集群
  8. 自适应网页设计(Responsive Web Design)(转)
  9. pandas提取某两列的值_Pandas进阶修炼120题第五期
  10. BGP选择路由的策略
  11. 宝塔面板关键目录解析
  12. 启动计算机键盘没反应,如何解决电脑开机显示屏和键盘无反应
  13. JQuery日历 日期选择
  14. Android 使用Loader轻松实现仿微信图片加载
  15. react 中 ref 管理列表
  16. 【从零学习openCV】IOS7根据人脸检测
  17. 笔记本 使用 Opencore 安装 苹果系统过程
  18. 请求转发和重定向的区别及什么时候使用
  19. JAVA 类的继承(私有属性、自动转型)(入门级小白一看就懂)
  20. wince下更新NK软件(wince ghost V1)成功了

热门文章

  1. 2018-12-18全球区块链今日热点
  2. win10 在管理里面没有找到 本地用户和组
  3. Unity中的资源管理-AssetBundle(1)
  4. activiti源码解析系列8 - 任务完成命令类
  5. 计算机应用与软件 订阅,《计算机应用与软件》杂志_网上订阅-C刊导航网
  6. Mac OS 显示隐藏文件
  7. 通过Java组件iText生成PDF报表或合同,完成pdf上传,预览,存入数据库
  8. 极地求生自定义服务器僵尸模式,绝地求生自定义房间使用手册 教你如何玩僵尸模式...
  9. 微信打开链接可以实现微信跳转手机浏览器,实现微信下载APP或者打开指定链接。
  10. 高德地图 - 点击改变当前 marker 图标(marker点击切换 icon 上一个 icon 恢复原样)