(1)打开文件指令为Image.open(‘house.jpg’),Image.open(‘house.jpg’).convert(‘L’)
(2)打开后图像格式为PIL.JpegImagePlugin.JpegImageFile image, 通道顺序为RGB;灰度图则分别为None和mode=L;
(3)需要使用nd.array()转换为array格式的矩阵,
(4)保存时再用Image.fromarray()转换回图像
from PIL import Image
import numpy as np
I = Image.open('./0.png')
print(type(I)) #--->
print(I.size) #--->(1280, 720)
I.show()
I.save('./save.png')
I_array = np.array(I)
print(type(I_array)) #--->
print(I_array.shape) #--->(720, 1280, 3)
I1 = Image.fromarray(I_array) #-->
print(type(I1)) #-->
print(I1.size) #--->(1280, 720)
(1)读入指令为cv2.imread(‘house.jpg’),cv2.imread(‘house.jpg’,cv2.IMREAD_GRAYSCALE)
(2)读入图像为nd.array格式矩阵,注意颜色频道BGR的顺序,
(3)保存指令为cv2.imwrite(‘imgsavename.*’,imgname)。
如果显示图像时做了BGR2RGB,则在保存前应该做RGB2BGR,否则存的图频道颠倒。
import cv2
I = cv2.imread('./0.png')
b, g, r = cv2.split(img) #像素分离
cv2.namedWindow('input_image', cv2.WINDOW_AUTOSIZE)
I = cv2.cvtColor(I, cv2.COLOR_BGR2GRAY) #灰度化
cv2.imshow('input_image', I)
cv2.imwrite('./save1.png', I)
print(type(I)) #--->
print(I.shape) #--->(720, 1280, 3)
#参数=0:(也可以是小于0的数值)一直显示,不会有返回值,若在键盘上按下一个键即会消失,则会返回一个按键对应的ascii码值
#参数>0:显示多少毫秒,超过这个指定时间则返回-1
cv2.waitKey(0)
cv2.destroyAllWindows()
(1)读入彩色图像指令为 io.imread(‘house.jpg’),读入图片的数据格式为uint8,三通道RGB格式,与cv2同
(2)读入灰度图像指令为io.imread(‘house.jpg’,as_grey=True), 读入图片的数据格式为float,数值在0到1之间
from skimage import io
# ski读入彩色图
img_ski = io.imread('house.jpg')
io.imshow(img_ski) # io.imshow显示图像
io.imsave('house_skisave.jpg',img_ski) # io.save保存图像
img_skisave = plt.imread('house_skisave.jpg') # plt读入图像
print(img_ski.dtype)
print(img_ski.size)
print(img_ski.shape)
print(img_ski)
# ski读入灰度图
imgray_ski = io.imread('house.jpg',as_grey=True)
print(imgray_ski.dtype)
print(imgray_ski.size)
print(imgray_ski.shape)
print(imgray_ski)
io.imsave('house_gray_ski.jpg',imgray_ski)
读出来是 array 形式,并且按照(H,W,C)形式保存
import matplotlib.pyplot as plt
from scipy.misc import imread, imsave
I = imread('./0.png')
print(type(I)) #--->
print(I.shape) #--->(720, 1280, 3)
print(I.size) #--->2764800
imsave('./save1.png', I)
plt.imshow(I)
plt.show()
(1)读入指令为plt.imread(),
(2)保存指令为plt.savefig(‘imgsavename.*’),且一定在plt.show()之前;
plt.savefig将当前窗口内的内容保存,包括白边。
import matplotlib.pyplot as plt
fig = plt.figure('house')
img_plt = plt.imread('house.jpg')
plt.imshow(img_plt)
plt.savefig('house_pltsave.jpg') # 一定在plt.show()之前
plt.show()
img_pltsave = plt.imread('house_pltsave.jpg')