Skimage入门

Skimage入门

现在课程有门课搞机器视觉,老师让我们玩玩OpenCV,想起之前接触过skimage,比较简洁。就温故而知新喽!
先理一下结构。

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

skimage里的图片数据存储格式为ndarray哦!

1.读取文件数据

skimage.data里有样例图片,可以直接拿来用。图片显示依赖于plt,不像opencv有独立的imshow出来的窗口

import matplotlib.pyplot as plt
from skimage import data

cat = data.chelsea()
print("shape:{}".format(cat.shape))
print(cat.min(), cat.max())
plt.imshow(cat)
plt.colorbar()
cat[10: 110, 10: 110, :] = [0, 255, 0]
plt.imshow(cat)
plt.show()

在这里插入图片描述
当然,要读取自己的图片也是ok的。

image = io.imread("s.png")
io.imsave('nice', image)

2.直方图操作

画直方图
这里当然也可以直接使用plt.hist()函数直接画

img = data.camera()
hist, bin_centers = exposure.histogram(img)
# hist是该统计点的总数,bin_centers是统计点
# shape为(256,)
plt.fill_between(bin_centers, hist)
plt.show()

直方图均衡

from skimage import exposure

equal = exposure.equalize_hist(img)
plt.hist(equal.flatten(), bins=256)

high_contrast = exposure.rescale_intensity(img, in_range=(10, 180))
# 加亮,提高对比度

3.滤波

from skimage.filters.rank import median

med1 = median(img, disk(3))
med2 = median(img, disk(5))
fig, axx = plt.subplots(ncols=3, figsize=(15, 10))
axx[0].imshow(img, cmap='gray')
axx[1].imshow(med1, cmap='gray')
axx[2].imshow(med2, cmap='gray')
fig.show()

稍微复习一下就行了,主角还是OpenCV啊!

猜你喜欢

转载自blog.csdn.net/weixin_42231070/article/details/82941103