小編給大家分享一下tensorflow中的圖片讀取和裁剪常用的方式有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!
一 方式1: skimage
from skimage import data, io, transform, color
import matplotlib.pyplot as plt
# io.imread 讀出的圖片格式是uint8,value是numpy array 類型。
image = data.coffee()
image = io.imread(dir)
plt.imshow(image)
plt.show()
io.save('1.jpg',image) #保存圖像
image_gray = color.rgb2gray(image) #轉換為灰度圖像
io.save('2.jpg',image_gray)
# 通過transform.resize()裁剪后的圖片是以 float64的格式存儲的,數值的取值范圍是(0~1)
image_ = transform.resize(image,(200,200))
img = image_ * 255 #將圖片的取值范圍改成(0~255)
img = img.astype(np.uint8)
img = image_ * 255 #將圖片的取值范圍改成(0~255)
img = img.astype(np.uint8) 二、方式2:cv2
import cv2 import matplotlib.pyplot as plt # cv2.imread讀出的圖片格式是uint8,value也是numpy array 類型。 # 圖像數據格式是以BGR的格式進行存儲的。需要將存儲類型改成RGB 的形式才能正常顯示原圖的顏色。 image=cv2.imread(dir) b,g,r = cv2.split(image) #將圖像通道分離開 rgb_image = cv2.merge([r,g,b]) #以RGB的形式重新組合 #image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 也可以使用這個函數直接轉換成RGB 形式 plt.imshow(rgb_image) # 通過cv2.resize()裁剪后的圖片還是以 numpy array 的方式保存的, 數值的取值范圍是(0~255) image_cv2 = cv2.resize(rgb_image) image=cv2.imread(dir) b,g,r = cv2.split(image) #將圖像通道分離開 rgb_image = cv2.merge([r,g,b]) #以RGB的形式重新組合 #image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 也可以使用這個函數直接轉換成RGB 形式 plt.imshow(rgb_image) # 通過cv2.resize()裁剪后的圖片還是以 numpy array 的方式保存的, 數值的取值范圍是(0~255) image_cv2 = cv2.resize(rgb_image)
補充知識:tensorflow中兩種讀圖及裁剪圖片的區別(io.imread和cv2.imread)以及(transform.resize和cv2.resize)
Tensorflow中,在訓練圖片數據之前,需要先對圖片進行預處理,讀圖和裁剪是最基本的兩步。常見的的讀圖何裁剪分別有兩種方式,這里小編將和大家分享下這幾種方式的實現以及他們之間的區別。
一、常見的兩種讀圖方式 io.imread() 和 cv2.imread()
1.io.imread 讀出的圖片格式是uint8,value是numpy array 類型。對于RGB 圖片,圖像數據是以RGB 的格式進行存儲的。

2.cv2.imread讀出的圖片格式是uint8 ,value也是numpy array 類型。唯一的區別是,圖像數據格式是以BGR的格式進行存儲的。需要將存儲類型改成RGB 的形式才能正常顯示原圖的顏色。特別是制作tfrecord 時,需要將圖片通道改成RGB,具體代碼如下。
import cv2 import matplotlib.pyplot as plt from skimage import transform import numpy as np import skimage.io as io train_dir = 'E:/TensorFlow/Project_TF/flower_tfrecord/data/test/roses/timg.jpg' '''以cv2方式讀取圖片''' image=cv2.imread(train_dir) b,g,r = cv2.split(image) #將圖像通道分離開 rgb_image = cv2.merge([r,g,b]) #以RGB的形式重新組合 #image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 也可以使用這個函數直接轉換成RGB 形式 plt.imshow(rgb_image) '''以io.imread方式讀取圖片''' #image = io.imread(train_dir) #讀圖并顯示 #plt.imshow(image)
二、常見的兩種圖片裁剪方式 cv2.resize() 和 transform.resize()
1.通過cv2.resize()裁剪后的圖片還是以 numpy array 的方式保存的, 數值的取值范圍是(0~255)

2.通過transform.resize()裁剪后的圖片是以 float64的格式存儲的,數值的取值范圍是(0~1)。通常在制作tfrecord 數據集的過程中,我們需要將其轉換成numpy array的形式,具體代碼如下
'''以io.imread方式讀取圖片并使用transform形式裁剪圖片''' image = io.imread(train_dir) #讀圖并顯示 plt.imshow(image) image =transform.resize(image, (208, 208)) img = image * 255 #將圖片的取值范圍改成(0~255) img = img.astype(np.uint8) plt.imshow(img)
看完了這篇文章,相信你對tensorflow中的圖片讀取和裁剪常用的方式有哪些有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。