#====================================================================================================
#【NumPy庫簡介】
# [1]NumPy是非常有名的Python科學計算工具包,其中包含大量有用的思想,比如【陣列物件】,用來表示向量、矩陣、
# 影象等以及【線性代數函式】。
# [2]【資料物件】可以幫助你實現陣列中重要的操作,比如【矩陣乘積】、【轉置】、【解方程系統】、【向量乘積】和
# 【歸一化】操作等,這些都為影象變形,對變化建模、影象分類、影象聚類等提供了基礎。
#【Matplotlib庫簡介】
# [1]我們處理【數學運算】、【繪製圖表】、或者在【影象上繪製點】、【直線】和【曲線】時,Matplotlib是個很好
# 的庫,具有比PIL更強大的繪圖功能。
# [2]Matplotlib中的PyLab介面包含很多方便使用者建立影象的函式。
#====================================================================================================
#====================================================================================================
#【Tensorflow中的影象處理函式】
# [1]在Tensorflow中,我們可以將一張【RGB彩色模式的影象】看成一個【三位矩陣:張量】,矩陣中的每一個數表示影象
# 上不同位置,不同顏色的亮度。
# [2]然而,影象在儲存時,並不是直接記錄這些矩陣中的數字,而是記錄經過壓縮編碼之後的結果。所以,要將一張影象還
# 原成一個三維矩陣,需要解碼的過程。Tensorflow提供了對Jpeg和png格式影象編碼/解碼的函式。
#====================================================================================================
import cv2
import tensorflow as tf
import matplotlib.pyplot as plt
#【1】例項化一個Tensorflow中檔案讀寫類tf.gfile.FastGFile的類物件,該類的建構函式第二個引數為檔案路徑,第三個引數
#為讀寫檔案的模式,rb表示讀取二進位制檔案
image_jpg = tf.gfile.FastGFile('F:/cifar-10-batches-py/building.jpg','rb').read()
with tf.Session() as sess:
image_jpg = tf.image.decode_jpeg(image_jpg) #[1]影象解碼
print(sess.run(image_jpg)) #[2]列印解碼後的影象(即為一個三維矩陣[w,h,3])
image_jpg = tf.image.convert_image_dtype(image_jpg,dtype=tf.uint8) #[3]改變影象資料型別
resiz_img = tf.image.resize_images(image_jpg,[300,200],method=tf.image.ResizeMethod.NEAREST_NEIGHBOR)
print(resiz_img.get_shape())
plt.figure(1) #[4]建立一個影象顯示視窗
plt.imshow(image_jpg.eval())
plt.figure(2)
plt.imshow(resiz_img.eval())
plt.show()