小马过_河

导航

skimage

它是由python语言编写的,
 
子模块名称                 主要实现功能
io    读取、保存和显示图片或视频
data     提供一些测试图片和样本数据
color  颜色空间变换
filters  图像增强、边缘检测、排序滤波器、自动阈值等
draw   操作于numpy数组上的基本图形绘制,包括线条、矩形、圆和文本等
transform    几何变换或其它变换,如旋转、拉伸和拉东变换等
morphology    形态学操作,如开闭运算、骨架提取等
exposure   图片强度调整,如亮度调整、直方图均衡等
feature  特征检测与提取等
measure    图像属性的测量,如相似性或等高线等
segmentation  图像分割
restoration      图像恢复
util     通用函数

 

Img读图片的大小是图片的(width, height);
而skimage的是(height,width, channel),
[这也是为什么caffe在单独测试时要在代码中设置:
transformer.set_transpose('data',(2,0,1)),
因为caffe可以处理的图片的数据格式是(channel,height,width),
所以要转换数据]
 
 
 图片的访问
  skimage读出来的图片可以直接img_file2[ ][ ]获得
图片读入程序中后,是以numpy数组存在的。因此对numpy数组的一切功能,对图片也适用。对数组元素的访问,实际上就是对图片像素点的访问。

彩色图片访问方式为:img[i,j,c]
i表示图片的行数,j表示图片的列数,c表示图片的通道数(RGB三通道分别对应0,1,2)。坐标是从左上角开始。

灰度图片访问方式为:gray[i,j]
切片: roi
=img[80:180,100:200,:]

 

图片信息

如果我们想知道一些skimage图片信息

from skimage import io, data
img = data.chelsea()
io.imshow(img)
print(type(img))  #显示类型
print(img.shape)  #显示尺寸
print(img.shape[0])  #图片高度
print(img.shape[1])  #图片宽度
print(img.shape[2])  #图片通道数
print(img.size)   #显示总像素个数,也就是w*h
print(img.max())  #最大像素值
print(img.min())  #最小像素值
print(img.mean()) #像素平均值
print(img[0][0])#图像的像素值

 

使用了color模块的rgb2gray()函数,将彩色三通道图片转换成灰度图。转换结果为float64类型的数组,范围为[0,1]之间。

将彩色三通道图片转换成灰度图,最后变成unit8, float转换为unit8是有信息损失的

常用的颜色空间有灰度空间、rgb空间、hsv空间和cmyk空间

 

如果一个文件夹里,我们既存放了一些jpg格式的图片,又存放了一些png格式的图片,现在想把它们全部读取出来,该怎么做呢?

import skimage.io as io
from skimage import data_dir
str='d:/pic/*.jpg:d:/pic/*.png'
coll = io.ImageCollection(str)
print(len(coll))

 

注意这个地方'd:/pic/.jpg:d:/pic/.png' ,是两个字符串合在一起的,第一个是'd:/pic/.jpg', 第二个是'd:/pic/.png' ,合在一起后,中间用冒号来隔开

这样就可以把d:/pic/文件夹下的jpg和png格式的图片都读取出来。如果还想读取存放在其它地方的图片,也可以一并加进去,只是中间同样用冒号来隔开。
io.ImageCollection()这个函数省略第二个参数,就是批量读取。如果我们不是想批量读取,而是其它批量操作,如批量转换为灰度图.




io.imshow(img)  
这一行代码的实质是利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据

 


作者:jiandanjinxin
链接:https://www.jianshu.com/p/f2e88197e81d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

posted on 2018-03-17 19:11  小马过_河  阅读(396)  评论(1编辑  收藏  举报