1. 程式人生 > >tensorflow圖片預處理和測試效果(resize,crop,pad等)

tensorflow圖片預處理和測試效果(resize,crop,pad等)

#%% 讀圖片程式碼
import matplotlib.pyplot as plt # plt 用於顯示圖片
import matplotlib.image as mpimg # mpimg 用於讀取圖片
import tensorflow as tf

test_image = 'G:/ZhangSG/01.jpg'
image_raw_data_jpg = tf.gfile.FastGFile(test_image, 'rb').read() 
with tf.Session() as sess:  
    
    # output the original JPG image
    lena = mpimg.imread(test_image) 
    plt.figure(0)
    plt.imshow(lena) # 顯示圖片
    plt.show()
    
    
    # Decode a JPG image
    img_data_jpg = tf.image.decode_jpeg(image_raw_data_jpg)
    img_data_jpg = tf.image.convert_image_dtype(img_data_jpg, dtype=tf.float32)
    
    
    # resize it to 299 by 299 using default method.
    resized_image = tf.image.resize_images(img_data_jpg, [299, 299])    
    plt.figure(1)
    plt.imshow(resized_image.eval()) # 顯示圖片
    plt.show()
    
    
    # crop it to 299 by 299 using default method.
    cropped_image = tf.image.resize_image_with_crop_or_pad(img_data_jpg, 299, 299)
    plt.figure(2)
    plt.imshow(cropped_image.eval()) # 顯示圖片
    plt.show()

    
#    plt.axis('off') # 不顯示座標軸

以上這段程式碼可以直接用,如果是第一次用,需要注意這麼幾個地方:

1. matplotlib這個包需要從python裡面安裝一下,類似pip install 這種,不再贅述,可以從網上找教程,不難。

2. test_image是圖片路徑+圖片名,這裡直接用絕對路徑表示了,如果用程式碼,這裡必須改為自己的路徑。

3. 結果會顯示三張圖片,分別是原始圖片(python自帶的讀圖片程式碼),tf的resize程式碼效果,以及crop和pad程式碼效果。需要補充的是resize一定要用tf的這個resize_images,如果用image.resize()會帶來奇怪的輸出,不贅述。crop和pad是以圖片自己為中心進行裁剪或填充。

後續:

http://blog.csdn.net/UESTC_C2_403/article/details/72699260

這篇部落格可以參考,四種不同方式的處理。