Python图像处理基本操作(简单(上))

1.安装PIL包,skimage包,导入这些必需的库

from skimage import io,data,color

2.使用io包下的imread方法:加载图片;imshow:显示图像;r的作用:确保字符串中的反斜杠不会被解释为转义序列

img = io.imread(r'C:\Users\86130\Desktop\test1.png')

io.imshow(img)

io.show()

运行结果1:

3.as_gray=True:将图像进行灰度处理

img = io.imread(r'C:\Users\86130\Desktop\test1.png',as_gray = True)

io.imshow(img)

运行结果2:

4.加载skimage包下的data模块的图片(data模块提供一些测试图片)

img = data.coffee()

io.imshow(img)

运行结果3:

5.将程序自带的图片进行灰度处理;

from skimage import io, data, color     #导入必需的包

img = data.coffee()                  #加载程序里的图片

gray_img = color.rgb2gray(img)        #函数用于将彩色图像转换为灰度图像

io.imshow(gray_img, cmap='gray')     #cmap=’gray’:确保图像以灰度显示出来

io.show()

运行结果4:

6.data_dir是一个模块属性:提供了skimage库中示例数据集的目录路径;路径自动检测,它基于skimage库的安装位置

from skimage import data_dir

print(data_dir)      #打印图像路径

运行结果5:

7.保存图像,使用io包下的imsave方法:第一个参数:图像要保存的文件路径,第二个参数:被保存的图像

from skimage import io,data
img = data.coffee()
io.imshow(img)
io.imsave(r'D:\gf\2.jpg',img)

运行结果6:

               

8.遍历指定文件夹内的所有图片文件,并将它们以PNG格式保存到同一文件夹中,文件名后面加上_wzq

1   from skimage import io

2   import os

3   path = 'D:/ttttpppp'

4   names = os.listdir(path)

5   for file_name in names:

6       if file_name.lower().endswith(('.png', '.jpg', '.jpeg')):

7           photo_path = os.path.join(path, file_name)

8           img = io.imread(photo_path)

9           new_file_name = f'{os.path.splitext(file_name)[0]}_wzq.png'

10          new_photo_path = os.path.join(path, new_file_name)

11          io.imsave(new_photo_path, img)

第1、2行代码:导入所需的包,os用于文件目录的操作

第3行代码:照片所在文件夹的路径(创建文件夹,里面放自己需要处理的图像)

第4行代码:获取文件夹内所有文件的名字,将它们存储在列表names中

第5行代码:遍历names列表中的每个文件名

第6行代码:检查文件扩展名,确保只有图片文件为(PNG, JPG, JPEG)会被处理

第7行代码:将path和file_name两个字符串拼接成一个完整的文件路径,将这个路径赋值给photo_path

第8行代码:读取存储在变量photo_path中的图片

第9行代码:分割file_name为两部分,‘名字’+‘后缀’,'_wzq.png'是一个字符串,附加到‘名字’后面

第10行代码:创建新的保存路径

第11行代码:将图片保存到新的路径,这里图片保存的是PNG格式

9.图像基本信息

9.1显示类型

print(type(img))

运行结果7:

9.2显示尺寸

print(img.shape)

运行结果8:参数:宽度  高度  通道数

                  

9.3图片宽度(0代表索引,也就是上面第一个参数)

print(img.shape[0])

9.4图片高度

print(img.shape[1])

9.5图片通道数(彩色图像通常是 3(红、绿、蓝),灰度图像是 1)

print(img.shape[2])

9.6显示总像素个数

print(img.size)

9.7最大像素值对于灰度图像每个像素的值范围是从0到255,0代表黑色,255代表白色。在这种情况下,最大像素值就是255

print(img.max())

9.8最小像素值

print(img.min())

9.9像素平均值

print(img.mean())

10.加椒盐噪点

1   from skimage import io,data

2   import numpy as np

3   img = io.imread(r'C:\Users\86130\Desktop\test1.png')



4   row,col,dim = img.shape

5   for i in range(6000):

6       x = np.random.randint(0,row)

7       y = np.random.randint(0,col)

8       img[x,y,:]=255

9   io.imshow(img)

10  io.imsave('D:/gf/TEST.png',img)

注:代码行中的数字均为我自己标注的,与代码内容无关

第1、2行代码:导入所需的模块和函数

第3行代码:使用io.imread函数读取指定路径的图像文件,然后存储在变量img中

第4行代码:获取图像的行数、列数和颜色通道数,并将它们分别存储在变量row、col和dim中

第5行代码:使用for循环,重复6000次,

第6、7行代码:使用random.randint函数生成两个随机整数,分别代表行索引x,列索引y

第8行代码:将图像img在索引(x, y)处的像素值设置为255,也就是在图像的随机位置添加白色点(噪点)

第9行代码:显示图片

第10行代码:保存图片

运行结果9:

11.去除噪点

11.1中值滤波

zs_img= io.imread('D:/gf/TEST.png')    #导入噪点图像

median = cv2.medianBlur(zs_img,3)    #使用中值滤波方法去除噪点,第一个参数:噪点图像;第二个参数:核大小

io.imshow(median)

运行结果10:

11.2高斯滤波

immg = io.imread('D:/gf/TEST.png')

gs_immg = cv2.GaussianBlur(immg,(5,5),0)    #第一个参数(5,5):卷积核大小,第二个参数(0):我理解的是数值越大,图像越模糊

io.imshow(gs_immg)

运行结果11:

11.3 高斯滤波和中值滤波的区别

1、高斯滤波适用于去除随机噪声,但可能会模糊图像细节

2、中值滤波适用于去除椒盐噪声,并能较好地保持图像边缘和细节

裁剪图像

from skimage import io,data

img = data.cat()

roi = img[80:150,130:210,:]

io.imshow(roi)

第1行代码:导包

第2行代码:加载程序自带的图像

第3行代码:从img切出了一块区域,第一个参数:行(高度)从80-150(不包括150);第二个参数:列(宽度)从130-210(不包括210);第三个参数:表示所有通道

运行结果12:

                       

经过参数的修改:roi = img[80:170,130:350,:]

运行结果13:

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值