1. 程式人生 > >TensorFlow學習--tensorflow影象處理--影象讀取/格式轉換

TensorFlow學習--tensorflow影象處理--影象讀取/格式轉換

tensorflow影象處理
一張RGB格式的彩色影象可以看成是一個三維矩陣,矩陣中的每一個數代表影象不同的位置上不同的顏色的亮度.但是影象儲存時並不是直接儲存這些三維矩陣,而是要先對其進行壓縮編碼再儲存.因此讀取影象的過程其實是先讀取其壓縮編碼後的結果,然後將其解碼的過程.

讀取影象&轉換格式

#!/usr/bin/python
# coding:utf-8

import matplotlib.pyplot as plt
import tensorflow as tf
# 讀取影象資料
img = tf.gfile.FastGFile('daibola.jpg').read()

with
tf.Session() as sess: # 用ipeg格式將影象解碼得到三維矩陣(png格式用decode_png) # 解碼後得到結果為張量 img_data = tf.image.decode_jpeg(img) # 打印出得到的三維矩陣 print img_data.eval() # 使用pyplot視覺化得到的影象 plt.imshow(img_data.eval()) plt.show() #轉換格式 # 轉換影象的資料型別 img_data = tf.image.convert_image_dtype(img_data, dtype=tf.uint8) # 將影象的三維矩陣重新按照png格式存入檔案
encoded_image = tf.image.encode_png(img_data) # 得到影象的png格式 with tf.gfile.GFile('model/model.png', 'wb') as f: f.write(encoded_image.eval())

輸出:

[[[ 19  18  16]
  [ 20  19  17]
  [ 22  21  19]
  ..., 
  [ 22  21  19]
  [ 22  21  19]
  [ 22  21  19]]

 [[  8   7   5]
  [ 10   9   7
] [ 11 10 8] ..., [ 8 7 5] [ 9 8 6] [ 10 9 7]] [[ 14 13 11] [ 15 14 12] [ 17 16 14] ..., [ 13 12 10] [ 13 12 10] [ 15 14 12]] ..., [[109 88 57] [109 88 57] [109 88 57] ..., [ 35 28 18] [ 35 28 18] [ 34 27 17]] [[109 88 57] [109 88 57] [109 88 57] ..., [ 34 27 17] [ 34 27 17] [ 34 27 17]] [[107 88 56] [107 88 56] [107 88 56] ..., [ 32 28 17] [ 33 29 18] [ 33 29 18]]]

這裡寫圖片描述