(超全)python图像处理详细解析(1)

skimage包的子模块

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

1.读取图像

#导包,io模块提供了图像输入输出的功能
from skimage import io
#io.imread()函数读取图像文件
img = io.imread('iii.jpg',as_gray=True)
#io.imshow()函数显示存储在变量img中的图像
io.imshow(img)
io.show()

在这里插入图片描述

2.图像灰度处理

#io模块提供了图像输入输出的功能
from skimage import io
#io.imread()函数读取图像文件,并将其以灰度图像的形式存储在变量img中

img = io.imread('iii.jpg',as_gray=True)
io.imshow(img)
io.show()

在这里插入图片描述

3.加载程序自带图像

skimage程序自带了一些示例图片,如果我们不想从外部读取图片,就可以直接使用这些示例图片:
astronaut 宇航员图片
coffee 一杯咖啡图片
lena 美女图片
camera 拿相机的人图片
coins 硬币图片
moon 月亮图片
checkerboard 棋盘图片
horse 马图片
page 书页图片
chelsea 小猫图片
hubble_deep_field 星空图片
text 文字图片
clock 时钟图片
immunohistochemistry 结肠图片
显示这些图片可用如下代码,不带任何参数

#io模块提供了图像输入输出的功能,data模块包含了一些示例图像。
from skimage import io,data
#加载名为chelsea小猫的示例图像
img=data.chelsea()
io.imshow(img)

在这里插入图片描述

4.查看存储路径

#data_dir用于存储示例图像数据集的路径
from skimage import data_dir
print(data_dir)

显示结果:
在这里插入图片描述

5.保存图片

使用io模块的imsave(fname,arr)函数来实现。第一个参数表示保存的路径和名称,第二个参数表示需要保存的数组变量。

from skimage import data,io
img = data.chelsea()
io.imshow(img)
io.imsave('D:\cat1.jpg',img)

保存图片的同时也起到了转换格式的作用。如果读取时图片格式为jpg图片,保存为png格式,则将图片从jpg图片转换为png图片并保存。

6.图片信息

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)  #显示总像素个数
print(img.max())  #最大像素值
print(img.min())  #最小像素值
print(img.mean())   #像素平均值

7.输出小猫图片的G通道中的第20行30行列的像素值

img[i,j,c]:
i表示图片的行数,j表示图片的列数,c表示图片的通道数
(RGB三通道分别对应0,1,2)

from skimage import io,data
img = data.chelsea()
pixel=img[20,30,1]
print(pixel)

在这里插入图片描述

8.显示红色单通道图片

from skimage import io,data
img = data.chelsea()
#提取红色通道
R=img[:,:,0]
io.imshow(R)

提取蓝色通道数据:B = img[:,:,2]
提取绿色通道数据:G = img[:,:,1]
在这里插入图片描述

9.对小猫图片添加椒盐噪声

用到了numpy包里的random来生成随机数,randint(0,cols)表示随机生成一个整数,范围在0到cols之间。
用img[x,y,:]=255这句来对像素值进行修改,将原来的三通道像素值,变为255

from skimage import io,data
import numpy as np
img = data.chelsea()

#获取图像的行数、列数和通道数。
rows,cols,dims = img.shape
#随机生成50000个椒盐
for i in range(50000):
#随机生成椒盐噪声点的坐标(x和y)
    x=np.random.randint(0,rows)
    y=np.random.randint(0,cols)
    img[x,y,:]=200
io.imshow(img)

在这里插入图片描述

10.高斯去噪

高斯模糊是一种常用的去除噪声的方法,通过对图像进行模糊处理来平滑图像,去除噪声。

先保存刚刚的椒盐去噪图片

io.imsave('D:\jycat1.jpg',img)
import cv2
#读取图像
image = cv2.imread(r'D:\rgzn\jycat.png')
#这行代码调用cv2.GaussianBlur()函数,对读取的图像进行高斯模糊处理。
#参数(5, 5)表示卷积核的大小为5x5,第三个参数0表示在X和Y方向上的高斯标准差。
blurred_image = cv2.GaussianBlur(image,(5,5),0)
#使用cv2.imshow()函数显示名为Blurred Image的窗口,并在该窗口中显示经过高斯模糊处理后的图像blurred_image。
cv2.imshow('Blurred Image',blurred_image)
#等待用户按下任意键。
cv2.waitKey(0)
#关闭所有打开的窗口。
cv2.destroyAllWindows()

在这里插入图片描述

11.中值滤波去噪

中值滤波是一种非线性滤波方法,对每个像素点周围的像素值取中值,从而有效去除椒盐噪声等噪声。

import cv2

image = cv2.imread(r'D:\rgzn\jycat.png')
#对读取的图像进行中值模糊处理。参数5表示卷积核的大小为5x5。
median_blurred_image = cv2.medianBlur(image, 5)
#使用cv2.imshow()函数显示名为Median Blurred Image的窗口,并在该窗口中显示经过中值模糊处理后的图像
cv2.imshow('Median Blurred Image', median_blurred_image)
#等待用户按下任意键。
cv2.waitKey(0)
#关闭所有打开的窗口。
cv2.destroyAllWindows()

在这里插入图片描述

12.随机生成噪声点

import cv2
import numpy as np
import random
img = cv2.imread('mao.jpg')
#获取图像的形状信息,包括高度、宽度和通道数,并将其存储在ingInfo变量中。
ingInfo = img.shape
#获取图像高度
h = ingInfo[0] - 1
#获取图像宽度
w = ingInfo[1] -1
# 噪声点的个数
temp = 2500 
#偶数白点,奇数黑点
for i in range(0, temp):
    if random.randint(1, temp) % 2 == 0:
        img[random.randint(0, h), random.randint(0, w)] = (255, 255, 255)
    if random.randint(1, temp) % 2 != 0:
        img[random.randint(0, h), random.randint(0, w)] = (0, 0, 0)
cv2.imshow('33', img)
cv2.imwrite('noise.jpg', img)
 
cv2.waitKey(0)

在这里插入图片描述

13.对小猫图像进行裁剪

from skimage import io,data
img=data.chelsea()
roi=img[70:150,130:220,:]
io.imshow(roi)

在这里插入图片描述

14.对像素点进行操作

img[i,:] = img[j,:]		 # 将第 j 行的数值赋值给第 i 行
 
img[:,i] = 100 			# 将第 i 列的所有数值设为 100
 
img[:100,:50].sum()   	# 计算前 100 行、前 50 列所有数值的和
 
img[50:100,50:100]   	# 50~100 行,50~100 列(不包括第 100 行和第 100 列)
 
img[i].mean()		 	# 第 i 行所有数值的平均值
 
img[:,-1]			 	# 最后一列
 
img[-2,:] (or img[-2]	)	 # 倒数第二行
  • 20
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值