skimage学习(一)

本文详细介绍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

显示结果:

 

转载于:https://www.cnblogs.com/kuangkuangduangduang/p/10287588.html

05-04
### Python `skimage` 库使用指南 #### 什么是 `skimage`? `skimage` 是指 **scikit-image**,这是个用于图像处理的强大开源库。它提供了广泛的算法和工具,适用于各种图像处理任务,如过滤、分割、颜色空间转换以及形态学操作等[^3]。 --- #### 安装 `skimage` 要使用 `skimage`,首先需要确保已安装该库。可以通过以下命令完成安装: ```bash pip install scikit-image ``` 如果正在使用 Anaconda 环境,则可以运行以下命令: ```bash conda install -c conda-forge scikit-image ``` 注意:某些情况下可能还需要额外依赖项(例如 NumPy 和 SciPy),这些通常会自动解决,但如果未成功,请手动安装它们[^1]。 --- #### 加载和显示图像 以下是加载和显示图像的基本示例代码: ```python from skimage import io, color import matplotlib.pyplot as plt # 读取图像文件 image_path = 'example.jpg' # 替换为实际路径 image = io.imread(image_path) # 显示彩色图像 plt.figure(figsize=(8, 6)) plt.imshow(image) plt.title("Original Image"), plt.axis('off') plt.show() ``` 此部分展示了如何利用 `io.imread()` 方法加载本地图片,并通过 Matplotlib 进行可视化[^4]。 --- #### 图像灰度化 将彩色图像转换为灰度图像是常见的预处理步骤之。下面是个简单的实现方式: ```python # 将 RGB 转换为灰度 gray_image = color.rgb2gray(image) # 可视化灰度图像 plt.figure(figsize=(8, 6)) plt.imshow(gray_image, cmap='gray') plt.title("Grayscale Image"), plt.axis('off') plt.show() ``` 这里调用了 `color.rgb2gray()` 函数来执行色彩空间变换[^4]。 --- #### 边缘检测 边缘检测是种重要的图像特征提取技术。`skimage` 提供了多种方法来进行这操作,比如 Sobel 滤波器: ```python from skimage.filters import sobel # 使用 Sobel 检测边缘 edges = sobel(gray_image) # 展示结果 plt.figure(figsize=(8, 6)) plt.imshow(edges, cmap='gray') plt.title("Edge Detection with Sobel Filter"), plt.axis('off') plt.show() ``` Sobel 滤波器能够突出图像中的边界区域[^4]。 --- #### 形态学操作 形态学操作常用于二值图像的清理工作。例如腐蚀 (erosion) 和膨胀 (dilation),可以帮助去除噪声或填补孔洞: ```python from skimage.morphology import erosion, dilation, disk # 创建结构元素 selem = disk(5) # 执行侵蚀与扩张 eroded = erosion(gray_image > 0.5, selem=selem) dilated = dilation(eroded, selem=selem) # 对比原图与处理后的效果 fig, axes = plt.subplots(1, 3, figsize=(15, 5)) axes[0].imshow(gray_image > 0.5, cmap='gray'), axes[0].set_title("Binary Image") axes[1].imshow(eroded, cmap='gray'), axes[1].set_title("Eroded Image") axes[2].imshow(dilated, cmap='gray'), axes[2].set_title("Dilated Image") for ax in axes: ax.axis('off') plt.tight_layout(), plt.show() ``` 这段脚本演示了如何定义自定义形状作为结构元素,并将其应用于输入数据集之上。 --- #### 学习资源推荐 为了更深入地理解 `skimage` 的功能及其应用场景,可参考如下书籍资料: - *Python 数据科学手册* —— 推荐章节涉及数值计算基础及可视化的相关内容[^5]。 - Scikit-image 官方文档链接:<https://scikit-image.org/docs/stable/> ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值