1. 程式人生 > >tensorflow直接讀取影象資料之gfile,WholeFileReader,read_file

tensorflow直接讀取影象資料之gfile,WholeFileReader,read_file

在初涉tensorflow的時候,一般採用公開資料集進行訓練,對於資料集的格式以及讀取很不清楚,所以這裡給出tensorflow直接讀取影象序列的方法,自己進行資料集的構建。下面給出集中可以參考的方法。
一、單張圖片讀取
1.tensorflow的gfile讀取影象,matplotlib用於視覺化
使用tensorflow裡面給出了一個函式用來讀取影象,tf.gfile.FastGFile(‘path’, ‘rb’).read()。讀取結果是最原始的影象,沒有經過解碼。如果要顯示讀入的影象,則學要解碼,tf.image.decode_jepg和tf.image.decode_png分別用於解碼jpg格式和png格式的影象,得到影象的畫素值,這個畫素值可以用於顯示影象。

import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
image_raw = tf.gfile.FastGFile('00000011.jpg','rb').read()  #bytes,相對路徑
img = tf.image.decode_jpeg(image_raw)  #Tensor
with tf.Session() as sess:
    print(type(image_raw)) # bytes
    print(type(img)) # Tensor
    print(type(img.eval
())) # ndarray print(img.eval().shape)#(240,320,3) print(img.eval().dtype)#uint8 plt.figure(1) plt.imshow(img.eval()) plt.show()

結果:decode輸出是Tensor,eval後是ndarray

<class 'bytes'>
<class 'tensorflow.python.framework.ops.Tensor'>
<class 'numpy.ndarray'>
(240, 320, 3
) uint8

這裡寫圖片描述
圖1 讀取顯示的結果
2.tensorflow的WholeFileReader輸入queue
在之前的文章中也使用到了佇列讀取(http://blog.csdn.net/xuan_zizizi/article/details/78400839),差別在於讀取佇列的reader不一樣,這裡首先建立影象的輸入佇列,然後定義reader,讀取序列,讀取的進行解碼,再得到ndaarry。

import matplotlib.pyplot as plt
import tensorflow as tf     
import numpy as np     
path = '/home/zcm/tensorf/00000011.jpg'#絕對路徑
file_queue = tf.train.string_input_producer([path]) #建立輸入佇列
image_reader = tf.WholeFileReader()  #reader
_, image = image_reader.read(file_queue)  #reader讀取序列
image = tf.image.decode_jpeg(image)  #解碼,tensor
with tf.Session() as sess:  
    coord = tf.train.Coordinator() #協同啟動的執行緒  
    threads = tf.train.start_queue_runners(sess=sess, coord=coord) #啟動執行緒執行佇列  
    sess.run(image)
    print(type(image))#tensor
    coord.request_stop() #停止所有的執行緒  
    coord.join(threads)
    print(type(image.eval()))#ndarray
    print(image.eval().shape)#240×320×3
    print(image.eval().dtype)#uint8
    plt.figure(1)
    plt.imshow(image.eval()) 
    plt.show()

結果:decode輸出是Tensor,eval後是ndarray,顯示圖和圖1一樣,略

<class 'tensorflow.python.framework.ops.Tensor'>
<class 'numpy.ndarray'>
(240, 320, 3)
uint8

3.tensorflow的read_file,decode輸出是Tensor,eval後是ndarray
與方法1的gfile讀取差別不大,只是換了一個函式read_file

import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
image_value = tf.read_file('00000011.jpg')#相對路徑,讀取
img = tf.image.decode_jpeg(image_value)#解碼
with tf.Session() as sess:
    print(type(image_value)) #tensor
    print(type(img)) # Tensor
    print(type(img.eval())) # ndarray 
    print(img.eval().shape)
    print(img.eval().dtype)
    plt.figure(1)
    plt.imshow(img.eval())
    plt.show()

結果:decode輸出是Tensor,eval後是ndarray,顯示圖和圖1一樣,略

<class 'tensorflow.python.framework.ops.Tensor'>
<class 'tensorflow.python.framework.ops.Tensor'>
<class 'numpy.ndarray'>
(240, 320, 3)
uint8

相關推薦

tensorflow直接讀取影象資料gfileWholeFileReader,read_file

在初涉tensorflow的時候,一般採用公開資料集進行訓練,對於資料集的格式以及讀取很不清楚,所以這裡給出tensorflow直接讀取影象序列的方法,自己進行資料集的構建。下面給出集中可以參考的方法。 一、單張圖片讀取 1.tensorflow的gfile

TensorFlow讀取影象資料的三種方式

  本文面對三種常常遇到的情況,總結三種讀取資料的方式,分別用於處理單張圖片、大量圖片,和TFRecorder讀取方式。並且還補充了功能相近的tf函式。 1、處理單張圖片   我們訓練完模型之後,常常要用圖片測試,有的時候,我們並不需要對很多影象做測試,可能就是幾張甚至一張。這種情況下沒有必要用佇列機制。

Tensorflow 影象資料預處理標準化

import numpy as np import random import matplotlib.pyplot as plt from PIL import Image 1.需要匯入的包 for n in range(4600): # input_d

DCMTK讀取DICOM影象資料SamplesPerPixel = 3PlanarConfiguration=1時如何用VTK顯示?

我用dcmtk讀取影象的DICOM影象畫素資料SamplesPerPixel = 3,PlanarConfiguration=1時,用vtk顯示,需要在哪裡設定這個PlanarConfiguration=1的引數? vtkUnsignedCharArray *scalars = vtkUnsig

Tensorflow機器學習專案實戰--1.5.2讀取影象資料

修改書上的程式碼,新增少量註釋。 環境:python 3 #匯入tensorflow import tensorflow as tf #新建一個Session sess = tf.Session(

使用gdal讀取影象資料然後用構建gdi+點陣圖顯示

如果想利用雙快取顯示gdal讀取的影象資料,把影象資料構建成一個gdi+的點陣圖來顯示void CGdalGdiView::OnDraw(CDC* /*pDC*/) { CGdalGdiDoc* pDoc = GetDocument(); ASSERT_VALID(pD

python3隨筆-opencv讀取影象資料

如何安裝opencv-python $pip3 install opencv-python 如何讀取影象資料 import numpy as np import cv2 as cv img = cv.imread('1.png') print(img) print(img.dtype) [[[200

【NLP】大資料始於足下:談談語料庫知多少

作者:白寧超 2016年7月20日13:47:51 摘要:大資料發展的基石就是資料量的指數增加,無論是資料探勘、文字處理、自然語言處理還是機器模型的構建,大多都是基於一定量的資料,資料規模達到一定程度,採用基於規則方法或者概率統計學的方法進行模型構建,感興趣知識的獲取才更有意義。那麼,是不是資料足

【閱讀】資料一本書學會視覺化設計

這裡把《資料之美,一本書學會視覺化設計》的摘抄分享下吧,圖示上有不清晰的地方還請包容。 你真的理解資料了嗎? 1.對原始資料瞭解得越多,打造的基礎就越堅實,也就越可能製作成令人信服的資料圖表。 2.好的視覺化設計,需要具備統計學和設計方面的知識。

spark讀取redis資料(互動式scala單機版java單機版)

互動式 第一步:向redis中新增資料 第二步:將jedis jar包放入~/lib目錄下,開啟spark服務 第三步:通過spark-shell讀取redis資料,並做相應處理

python讀取外部資料excel資料獲取及引數說明

本文簡單介紹pandas.read_excel()引數應用 官方函式引數 pandas.read_excel(io, sheetname=0,

python讀取外部資料讀取csv格式

20171204更新讀取csv檔案需要先open(如果路徑裡含有中文):file = open(' csv 檔案完整路徑')df  = pd.read_csv(file)如果全英文路徑不需要open最近

讀取影象資料的C實現(.raw儲存格式)

這是一篇關於均值濾波的文章,轉載過來參考其程式碼的讀取影象資料部分原文地址 http://www.cnblogs.com/qiqibaby/p/5277739.html// junzhilvbo.cpp : 定義控制檯應用程式的入口點。//#include "stdafx.h

FCN語義分割——直接載入影象資料

前言 在之前的一篇部落格中我們使用了在Github上的程式碼進行語義分割,在進行訓練的時候Github上給出的是mat檔案型別的影象資料,這就很不方便了。這裡經過查閱相關資料之後發現不需要進行格式的轉換也可以進行訓練的。 修改過程 這裡還是用之前的部落

tensorflow學習筆記——影象資料處理

  喜歡攝影的盆友都知道影象的亮度,對比度等屬性對影象的影響是非常大的,相同物體在不同亮度,對比度下差別非常大。然而在很多影象識別問題中,這些因素都不應該影響最後的結果。所以本文將學習如何對影象資料進行預處理使訓練得到的神經網路模型儘可能小地被無關因素所影響。但與此同時,複雜的預處理過程可能導致訓練效率的下降

Tensorflow例項2:將影象和標籤資料(*.csv)轉化成tfrecords檔案以便後續直接讀取tfrecords檔案進行圖片驗證碼識別訓練

由於多張影象和標籤值不在一起,現在此方法是把captcha_dir = "../data/GenPics/"此路徑下的圖片與此路徑下的.csv檔案合併起來,通過writer = tf.python_io.TFRecordWriter(path="./data/captcha.tfreco

tensorflow 批次讀取檔案內的資料並將順序隨機化處理. --[python]

使用tensorflow批次的讀取預處理之後的文字資料,並將其分為一個迭代器批次: 比如此刻,我有一個處理之後的資料包: data.csv  shape =(8,10),其中這個結構中,前五個列為feature , 後五列為label 1,2,3,4,5,6,7,8,9,10 11,12

史無前例---NodeJs 中讀取OracleDB 資料將data 生成 Excel檔案

/** * Created by json on 2017/6/5. * 推介使用:excel-export * 根據data ,JSON.parse(data)---<data=JSON.stringify(result)> * 設定 Exce

TensorFlow學習記錄-- 7.TensorFlow高效讀取資料tfrecord詳細解讀

一 why tfrecord? 對於資料量較小而言,可能一般選擇直接將資料載入進記憶體,然後再分batch輸入網路進行訓練(tip:使用這種方法時,結合yield 使用更為簡潔,大家自己嘗試一下吧,我就不贅述了)。但是,如果資料量較大,這樣的方法就不適用了,因

【OpenCV】將影象資料由YUV格式轉換成JPG格式直接使用而不儲存成檔案

解決方法 使用OpenCV影象編碼和解碼函式:imencode、imdecode std::vector data_encode; imencode(“.png”, img_encode, dat