skimage学习(一)
skimage即是Scikit-Image。基于python脚本语言开发的数字图片处理包
skimage包由许多的子模块组成,各个子模块提供不同的功能。主要子模块列表如下:
data子模块学习
导入data模块
from skimage import color,io
加载data中的图片
chelsea = data.logo()
io.imshow(chelsea)
结果:(此图来自data中的资源图片)
color子模块的操作
from skimage import color
logo1 = color.rgb2gray(logo) #将图片编程灰色
io.imshow(logo1)
filters操作
进行二值化操作
图像的二值化,就是将图像上的像素点的灰度值设置为0或255(即0和1),也就是将整个图像呈现出明显的只有黑和白的视觉效果。
现将图片编程灰白的图片
from skimage import filters
chelsea = data.chelsea() #加载图片
chelsea1 = color.rgb2gray(chelsea) #将加载的图片编程灰白的图片
io.imshow(chelsea) #展示图片
chelsea.shape # 观测图片尺寸
t1 = filters.threshold_otsu(chelsea1) #对灰色图片进行预直化操作
for i in range(300):
for j in range(451):
if chelsea1[i,j] <=t1: 判断像素点预直化操作后的值进行对比,
chelsea1[i,j]=0 将小于预直化操作的像素点变成0
else:
chelsea1[i,j]=1 将大于预直化操作的像素点变成1
io.imshow(chelsea1) 显示二值化操作后的图片
二值化操作的应用
进行验证码的识别
如上图可以看到上边验证码有噪点,这样不利于电脑识别,所以使用二值化操作对验证码去噪点
code = io.imread("./code.jpg") 加载图片,将图片编程灰白图片
code1 = color.rgb2gray(code)
io.imshow(code)
code1.shape 读出图片的大小为(211, 417)
进行二值化操作
c = filters.threshold_otsu(code1) #求出灰白图片的预值
c
for x in range(211):
for y in range(417):
if code1[x,y]<=c:
code1[x,y]=0
else:
code1[x,y]=1
io.imshow(code1)
如上图,进行二值化操作后只显示了三个数字,实际上是第四个数字颜色太浅了,被筛选走了
所以需要给验证码种颜色加深。直接对预值进行方法,让二值化是的筛选条件宽松
for x in range(211):
for y in range(417):
if code1[x,y]<=0.8:
code1[x,y]=0
else:
code1[x,y]=1
显示结果:
最新文章
- MyEclipse 8.5 注册码 生成代码
- Effective C++ -----条款22:将成员变量声明为private
- 转:45 个 LoadRunner 面试问题(附答案)_纯英文,太有逼格了
- 拉格朗日乘子法和KKT条件
- 反射认识_02_反射成员变量Field
- pgdump使用
- vi 编辑内容中查找字符位置
- Intellij IDEA 使用Debug模式运行非常慢
- iOS--九宫格布局
- Java面向对象面试案例
- asp.net 使用HttpModule记录全局错误
- CRM setValue方法日期类型字段赋值
- ubuntu12.04下搭建ftpserver
- sed命令详解-应用篇
- 19_Python元组总结
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
- H5的表格
- Solr全文检索框架
- Failed to process import candidates for configuration class [com.simple.....]
- mysql 导入excel文件数据到数据库