2020-12-30 数字图像基础

#pillow库,可以对图像进行操作
from PIL import Image
import matplotlib.pyplot as plt
# Image.open(路径) --- 打开图像
img=Image.open("lena.tiff")

# 图像对象名称.save(文件路径)   保存图像
img.save("test.tiff")    #改变文件名的后缀,就可以转换图像格式
img.save("lena.jpg")
img.save("lena.bmp")

img1=Image.open("lena.jpg")
img2=Image.open("lena.bmp")

print("image:",img.format)     #  fortmat 图片格式
print("image1:",img1.format)
print("image2:",img2.format)
print("\n")
print("image:",img.size)     #  size 图像尺寸
print("image1:",img1.size)
print("image2:",img2.size)
print("\n")
print("image:",img.mode)     #  mdoe 色彩模式
print("image1:",img1.mode)
print("image2:",img2.mode)

2020-12-30 数字图像基础_第1张图片

# plt.imshow(image对象/Numpy数组) 显示图像  为这个 matplotlib.pyplot 库里的
plt.figure(figsize=(5,5))    #画布尺寸
plt.imshow(img)    #image对象为用Image.open 打开的对象

2020-12-30 数字图像基础_第2张图片

plt.figure(figsize=(15,5))

plt.subplot(131)
plt.axis("off")    #不显示坐标轴
plt.imshow(img)
plt.title(img.format)

plt.subplot(132)
plt.axis("off")
plt.imshow(img1)
plt.title(img1.format)

plt.subplot(133)
plt.axis("off")
plt.imshow(img2)
plt.title(img2.format)

2020-12-30 数字图像基础_第3张图片

# 图像对象名称.convert(色彩模式) ----转换图像的色彩模式
img_L=img.convert("L")
img_L.save("lena_L.bmp")
img_L=Image.open("lena_L.bmp")
plt.figure(figsize=(15,15))
plt.imshow(img_L)
#  取值                      色彩模式
#   1                       二值图像
#   L                        灰度图像
#   P                      8位色彩图像
#   RGB                    24位色彩图像
#   RGBA                   32位色彩图像
#  CMYK                    CMYK色彩图像
#  YCbCr                   YCbCr色彩图像
#   I                     32位整型灰度图像
#   F                     32位浮点灰度图像

2020-12-30 数字图像基础_第4张图片

#图像对象名称.split()  ---色彩通道的分离与合并
img_r,img_g,img_b=img.split()
plt.figure(figsize=(10,10))

plt.subplot(221)
plt.axis("off")
plt.imshow(img_r,cmap="gray")
plt.title("R",fontsize=20)

plt.subplot(222)
plt.axis("off")
plt.imshow(img_g,cmap="gray")
plt.title("G",fontsize=20)


plt.subplot(223)
plt.axis("off")
plt.imshow(img_b,cmap="gray")
plt.title("B",fontsize=20)


#图像合并
img_rgb=Image.merge("RGB",[img_r,img_g,img_b]) #Image.merge(色彩模式,图像列表)
plt.subplot(224)
plt.axis("off")
plt.imshow(img_rgb)
plt.title("RGB",fontsize=20)

2020-12-30 数字图像基础_第5张图片

#图像转化位数组
import numpy as np                     #导入numpy库
arr_img=np.array(img)                  #转换
print("shape:",arr_img.shape,"\n")     #数组形状:三维
print(arr_img)                         #转化位数组后的情况
img_L=Image.open("lena_L.bmp")
arr_img_L=np.array(img_L)                   #将图像转化为numpy数组
print("shape:",arr_img_L.shape)
print(arr_img_L)

arr_img_new=255-arr_img_L                   #将黑白转换

plt.figure(figsize=(10,5))

plt.subplot(121)
plt.axis("off")
plt.imshow(arr_img_L,cmap="gray")

plt.subplot(122)
plt.axis("off")
plt.imshow(arr_img_new,cmap="gray")

2020-12-30 数字图像基础_第6张图片

#对图像的缩放,旋转和镜像
#  缩放图像.resize((width,height))
plt.figure(figsize=(10,10))
img_small=img.resize((64,64))
plt.imshow(img_small)
plt.show

#  图像对象名称.thumbnail((width,height))
#直接对原图像缩放,返回值是None

2020-12-30 数字图像基础_第7张图片

#图像裁剪:在图像上指定的位置裁剪出一个矩形区域
#  图像对象名称.crop((x0,y0,x1,y1))
img_region=img.crop((100,100,400,400))
plt.imshow(img_region)

2020-12-30 数字图像基础_第8张图片

#手写数字数据集
import tensorflow as tf
mnist=tf.keras.datasets.mnist   #下载数据集
(train_x,train_y),(test_x,text_y)=mnist.load_data()   #加载数据集
print("Training set:",len(train_x))
print("Testing set:",len(test_x))
print("\n")
print("train_x:",train_x.shape,train_x.dtype)      #训练集的形状。
print("train_y:",train_y.shape,train_y.dtype)      #测试集为标签,一维数组,值

2020-12-30 数字图像基础_第9张图片

train_x[0]        #数组形式
#对第一个训练集以图片输出,要用到import matplotlib.pyplot as plt 的库
plt.figure(figsize=(1,1))        
plt.imshow(train_x[0],cmap="gray") 
plt.axis("off")
plt.show()

train_y[0]  #这是测试集中对应的值,为5

2020-12-30 数字图像基础_第10张图片

#用循环输出随机输出4个数字
for i in range(4):
    num=np.random.randint(1,60000)   #用于输出一个随机数,1--60000是范围
    
    plt.subplot(1,4,i+1)             #子图顺序
    plt.axis("off")
    plt.imshow(train_x[num],cmap="gray")
    plt.title(train_y[num])
plt.show()

2020-12-30 数字图像基础_第11张图片

你可能感兴趣的:(自学tensorflow)