PYTHON 图像基本操作(简单(中))

一、图像类型的转换

1、输出原图像的数据类型

print(img.dtype.name)

img:读取图像的路径

输出结果:

.2 2、float转换为uint8

1.导入需要用的库  :img_as_ubyte函数将float转换为uint8类型
from skimage import img_as_ubyte

import numpy as np
2.创建一个数组,值内包括浮点型,类型设置为float
img = np.array([0,0.5,1],dtype = float)

print(img.dtype.name)
3.将float转换为uint8类型
dst = img_as_ubyte(img)

print(dst.dtype.name)   #输出出来

运行结果:

3、uint8转换为float

1.导入 img_as_float函数  :将uint8转换为float类型
from skimage import img_as_float

import numpy as np
2.读取这个路径下的图像
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
3.输出其类型
print(img.dtype.name)

# print(img)
4.转换类型
dst = img_as_float(img)

print(dst.dtype.name)

运行结果:

  1. 对图像进行归一化处理

二、线性归一化

# 线性归一化

1.导入必需的库
from skimage import io

import numpy as np
2.读取图像
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
3.通过min(img)和max(img)获取图像像素点的最大值和最小值
normalized_image=(img-np.min(img))/(np.max(img)-np.min(img))
4.展示出 线性归一化后的图像
io.imshow(normalized_image)
5.输出处理后的像素值
print(normalized_image)
6.输出处理后的图像的数据类型
print(normalized_image.dtype.name)

处理后的像素值会在0~1之间

运行结果:

像素值

2、均值方差归一化

import numpy as np

img = io.imread(r"C:\Users\86130\Desktop\111.jpg")

同理:线性归一化 公式

image = (img-np.min(img))/(np.max(img)-np.min(img))

io.imshow(image)

运行结果:

三、直方图均衡化

17.3.1 含义

exposure模块提供了一些图像增强和处理的函数,包括直方图均衡化用于增强图像的对比度,使图像中的像素值更均匀分布,从而提升图像的视觉效果

# 直方图均衡化

from skimage import exposure,io

image = io.imread(r"C:\Users\86130\Desktop\111.jpg")
调用exposure包下的equalize_hist方法
equalized_image = exposure.equalize_hist(image)

io.imshow(equalized_image)

运行结果:

四、颜色空间转换

from skimage import io,data,color

img = io.imread(r"C:\Users\86130\Desktop\111.jpg")

a = color.rgb2hsv(img)

io.imshow(a)
hsv介绍:h------色相 ; s------饱和度 ; v------色彩的亮度 ;

运行结果:

       

                           原图                                                                       转换后

1.hsv转换rgb

d = color.hsv2rgb(img)

运行结果:

2.rgb转换lab

from skimage import io,data,color

img = io.imread(r"C:\Users\86130\Desktop\111.jpg")

b = color.rgb2lab(img)

io.imshow(b)
Lab介绍:L------亮度 ; a------从绿色到红色的分量 ; b------从蓝色到黄色的分量 ;

运行结果:

       

lab转换rgb

e = color.lab2rgb(img)

运行结果:

​​​​​​​3.gray转换rgb

无法转换,会出现错误,rgb图像有三个维度,转变为灰度图像后只剩下一个维度,所以出现错误!!!

​​​​​​​3.1使用convert_colorspace函数将rgb转换成hsv
from skimage import io,data,color

img = io.imread(r"C:\Users\86130\Desktop\111.jpg")

hsv = color.convert_colorspace(img,'rgb','hsv')

io.imshow(hsv)

运行结果:

                  

18.4.1使用convert_colorspace函数将hsv转换成rgb
rgb = color.convert_colorspace(img,'hsv','rgb')

运行结果:

                  

​​​​​​​使用convert_colorspace函数将rgb转换成lab

无法转换,出现错误:被转换类型只有下图这些,不包含其他类型

五、根据不同的灰度值分成三个区域,并用默认颜色表示

1.导入模块,读取图像

from skimage import io,data,color

import numpy as np

img = io.imread(r"C:\Users\86130\Desktop\111.jpg")

2.将原图像进行灰度处理

gray = color.rgb2gray(img)

3.获取灰度图像的行和列

rows,cols=gray.shape

4.生成与灰度图像行列相同的全0数组

labels = np.zeros([rows,cols])

5.遍历灰度图像的行和列

for i in range(rows):

for j in range(cols):

6.如果[i,j]位置的灰度值小于0.4,将对应位置标记为0

        if (gray[i,j]<0.4):

            labels[i,j] = 0

7.如果[i,j]位置的灰度值大于0.4小于0.75,将对应位置标记为1

        elif(0.4<gray[i,j]<0.75):

            labels[i,j]=1

8.否则,标记为2

        else:

            labels[i,j]=2

9.使用label2rgb生成新的图像,存在变量dst1中

dst1 = color.label2rgb(labels)

io.imshow(dst1)

运行结果:

                

六、创建主窗口与子图

1.导入模块,读取图像

import matplotlib.pyplot as plt

img = io.imread(r"C:\Users\86130\Desktop\111.jpg")

2.使用matplotlib库中的figure函数创建一个图像窗口,设置窗口名称为img,大小为(8, 8)

plt.figure(num='img',figsize=(8,8))

3.在窗口创建子图,2行2列,在子图第1个位置放img(从左上角开始编号)

plt.subplot(2,2,1)            #参数(行,列,子图位置)

plt.title('origin image')         #设置窗口标题

plt.imshow(img)

4.在子图第二个位置放(红色)R通道处理后的图像;plt.cm.gray显示的图像以灰度的方式呈现

plt.subplot(2,2,2)

plt.title('R image')

plt.imshow(img[:,:,0],plt.cm.gray)

plt.axis('off')      #不显示坐标

5.在子图第三个位置放(绿色)G通道处理后的图像

plt.subplot(2,2,3)

plt.title('G image')

plt.imshow(img[:,:,1],plt.cm.gray)

plt.axis('off')
  1. 在子图第四个位置放(蓝色)B通道处理后的图像
plt.subplot(2,2,4)

plt.title('B image')

plt.imshow(img[:,:,2],plt.cm.gray)

plt.axis('off')
  1. 放在最后,展示图形
plt.show()         

运行结果:

      

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值