1. 程式人生 > >Tensorflow深度學習之十一:基礎影象處理

Tensorflow深度學習之十一:基礎影象處理

OpenCV是一個十分強大的視覺庫,tensorflow也提供了十分強大的圖片處理函式,下面是一個簡單的例子來說明使用tensorflow和opencv兩個工具進行深度學習程式的設計。

首先是使用的原始圖片:

這裡寫圖片描述

import tensorflow as tf
import cv2

# 這裡定義一個tensorflow讀取的圖片格式轉換為opencv讀取的圖片格式的函式
# 請注意:
# 在tensorflow中,一個畫素點的顏色順序是R,G,B。
# 在opencv中,一個畫素點的顏色順序是B,G,R。
# 因此,我們迴圈遍歷每一個畫素點,將第0位的顏色和第2位的顏色數值換一下即可。
# 第一個引數name:將要顯示的視窗名稱。 # 第二個引數image:儲存圖片資訊的一個tensor。 def cv2Show(name="", image=None): # 獲取矩陣資訊 np = image.eval() # 獲取行數列數 row, col = len(np),len(np[1]) # 兩重迴圈遍歷 for i in range(row): for j in range(col): # 交換數值 tmp = np[i][j][0] np[i][j][0
] = np[i][j][2] np[i][j][2] = tmp # 顯示圖片 cv2.imshow(name,np) pass # tensorflow會話 with tf.Session() as sess: # 以二進位制的方式讀取圖片。 image_raw_data = tf.gfile.FastGFile("bus.jpg", "rb").read() # 按照jpeg的格式解碼圖片。 image_data = tf.image.decode_jpeg(image_raw_data) # 顯示原圖片。
cv2Show("Read by Tensorflow+Dispalyed by Opencv",image_data) # opencv讀取同一張圖片。 img = cv2.imread("bus.jpg") # opencv顯示圖片。 cv2.imshow("Read by Opencv+Displayed by Opencv",img) # 重新調整大小。 # resize_images(images,size,method=ResizeMethod.BILINEAR,align_corners=False)' # 引數如下: # images:需要調整的圖片,通常是一個tensor # size:調整之後的大小,一般是一個長度為2的list # method:調整大小使用的方法,這裡我們使用最近鄰居法。 # align_corner:是否對齊四角。 resized = tf.image.resize_images(image_data,[300,300],method=tf.image.ResizeMethod.NEAREST_NEIGHBOR) # 顯示圖片。 cv2Show("Resized:Nearest Neighbor",resized) # 調整大小,採用切割或者填充的方式。 # 如果原始影象的尺寸大於目標影象,那麼這個函式會自動切割原始影象中的居中的部分。 # 如果原始影象的尺寸小於目標影象,那麼這個函式會自動在原始影象的周圍採用全0填充。 # resize_image_with_crop_or_pad(image, target_height, target_width) # image:待調整的影象。 # target_height:目標影象的高度。 # target_width:目標影象的寬度。 cropped = tf.image.resize_image_with_crop_or_pad(image_data,300,300) cv2Show("After being cropped",cropped) padded = tf.image.resize_image_with_crop_or_pad(image_data,600,900) cv2Show("After being padded",padded) # 通過比例調整影象大小。 # central_crop(image, central_fraction) # image:待調整的影象。 # central_fraction:比例,是一個(0,1]之間的數字,表示需要調整的比例。這裡我們選擇的比例是0.5,即50%。 central_cropped = tf.image.central_crop(image_data,0.5) cv2Show("After being central-cropped",central_cropped) cv2.waitKey()

使用的函式功能,引數等資訊在程式碼中均已寫明。

下面的表格實在使用調整大小的函式時常常需要使用的Method取值。

Method 影象大小的調整演算法
0 雙線性插值法 tf.image.ResizeMethod.BILINEAR
1 最近鄰居法 tf.image.ResizeMethod.NEAREST_NEIGHBOR
2 雙三次插值法 tf.image.ResizeMethod.BICUBIC
3 面積插值法 tf.image.ResizeMethod.AREA

下面是程式的執行截圖:

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

相關推薦

Tensorflow深度學習基礎影象處理

OpenCV是一個十分強大的視覺庫,tensorflow也提供了十分強大的圖片處理函式,下面是一個簡單的例子來說明使用tensorflow和opencv兩個工具進行深度學習程式的設計。 首先是使用的原始圖片: import tensorflow as

Tensorflow深度學習基礎影象處理

首先放出原始影象: 1、影象的翻轉 import tensorflow as tf import cv2 # 這裡定義一個tensorflow讀取的圖片格式轉換為opencv讀取的圖片格式的函式 # 請注意: # 在tensorflow中,一個畫素

Tensorflow深度學習基礎圖像處理

fcm 數字 ssi port con tty .net term file Tensorflow深度學習之十二:基礎圖像處理之二 from:https://blog.csdn.net/davincil/article/details/76598474 首先放出

Tensorflow深度學習矩陣切片與連結

1、TensorFlow矩陣切片操作:tf.slice函式 函式原型:slice(input_, begin, size, name=None) 引數: input:待切片的矩陣tensor。 begin:起始位置,表示從哪一個資料開始進行切片。這個起始

Tensorflow深度學習Tensorflow變數管理

宣告:本篇文章參考《Tensorflow實戰Google深度學習框架》一書 Tensorflow提供了通過變數名稱來建立或者獲取一個變數的機制。通過這個機制,在不同的函式中可以直接通過變數的名字來使用變數,而不需要將變數通過引數的形式到處傳遞。 Tensor

Tensorflow深度學習三十三tf.scatter_update

一、tf.scatter_update tf.scatter_update( ref, indices, updates, use_locking=True, name=None )    Applies sparse

Java Web 學習筆記RestEasy統一處理異常

JBoss RestEasy框架配置異常統一處理 前提 利用JBoss restEasy框架搭建的restful java web後臺應用 希望通過統一的方式對restful介面丟擲的異常進行

Esper學習EPL語法(七)

轉載請註明出處:http://blog.csdn.net/luonanqin        元宵過後回公司上班,換了個部門,換了個領導,做的事也換了,不過Esper還是會繼續搞,所以部落格也會慢慢寫的,大家別急。^_^        上一篇說到了EPL如何訪問關係型資料

Nginx學習-Nginx啟動框架處理流程

table ssl 優先級 init int 數組 linux cmd 默認 Nginx啟動過程流程圖 下面首先給出Nginx啟動過程的流程圖: ngx_cycle_t結構體 Nginx的啟動初始化在src/core/nginx.c的main函數中完成,當然main

【OpenCV入門教程】 形態學影象處理(二)開運算、閉運算、形態學梯度、頂帽、黑帽合輯

上篇文章中,我們重點了解了腐蝕和膨脹這兩種最基本的形態學操作,而運用這兩個基本操作,我們可以實現更高階的形態學變換。所以,本文的主角是OpenCV中的morphologyEx函式,它利用基本的膨脹和腐蝕技術,來執行更加高階的形態學變換,如開閉運算、形態學梯度、“頂帽”、“黑帽

Tensorflow深度學習LeNet的實現(CIFAR-10資料集)

一、LeNet的簡介 LeNet是一個用來識別手寫數字的最經典的卷積神經網路,是Yann LeCun在1998年設計並提出的。Lenet的網路結構規模較小,但包含了卷積層、池化層、全連線層,他們都構成了現代CNN的基本元件。 LeNet包含輸入層在內共有

Tensorflow深度學習AlexNet的實現(CIFAR-10資料集)

二、工程結構 由於我自己訓練的機器記憶體視訊記憶體不足,不能一次性讀取10000張圖片,因此,在這之前我按照圖片的類別,將每一張圖片都提取了出來,儲存成了jpg格式。與此同時,在儲存圖片的過程中,儲存了一個python的dict結構,鍵為每一張圖片的相對地

Tensorflow深度學習tf.nn.conv1d

一、conv1d   在NLP領域,甚至影象處理的時候,我們可能會用到一維卷積(conv1d)。所謂的一維卷積可以看作是二維卷積(conv2d)的簡化,二維卷積是將一個特徵圖在width和height兩個方向上進行滑窗操作,對應位置進行相乘並求和;而一維卷積則

Tensorflow深度學習 tf.scatter_nd_update

一、tf.scatter_nd_update    函式定義: tf.scatter_nd_update( ref, indices, updates, use_locking=True, name=None )   

機器學習深度學習系列連載 第二部分 深度學習)卷積神經網路 2 Why CNN for Image?

卷積神經網路 2 Why CNN 為什麼處理圖片要用CNN? 原因是: 一個神經元無法看到整張圖片 能夠聯絡到小的區域,並且引數更少 圖片壓縮畫素不改變圖片內容 1. CNN 的特點 卷積: 一些卷積核遠遠小於圖片大小; 同樣的pat

kubernetes學習筆記kubernetes dashboard認證及分級授權

第一章、部署dashboard 作為Kubernetes的Web使用者介面,使用者可以通過Dashboard在Kubernetes叢集中部署容器化的應用,對應用進行問題處理和管理,並對叢集本身進行管理。通過Dashboard,使用者可以檢視叢集中應用的執行情況,同時也能夠基於Dashboard建立或修

TensorFlow深度學習實戰(AlexNet對MNIST資料集進行分類

概要 進來一段時間在看深度學習中經典的CNN模型相關論文。同時,為了督促自己學習TensorFlow,通讀論文之後開始,利用TensorFlow實現各個模型,復現相關實驗。這是第一篇論文講解的是AlexNet,論文下載網址為:ImageNet Classific

學習MongoDB MongoDB聚合(Aggregation Pipeline基礎篇上)(三)

一、Aggregate簡介                  db.collection.aggregate()是基於資料處理的聚合管道,每個文件通過一個由多個階段(stage)組成的管道,可以對每個階段的管道進行分組、過濾等功能,然後經過一系列的處理,輸出相應的結果。

Tensorflow深度學習再談mnist手寫數字識別程式

之前學習的第一個深度學習的程式就是mnist手寫字型的識別,那個時候對於很多概念不是很理解,現在回過頭再看當時的程式碼,理解了很多,現將加了註釋的程式碼貼上,與大家分享。(本人還是在學習Tensorflow的初始階段,如果有什麼地方理解有誤,還請大家不吝指出。)

深度學習開源框架系列基礎演算法傅立葉變換1概要介紹

傅立葉變換時數字訊號處理的重要方法之一,是法國數學家傅立葉在1807年在法國科學學會上發表的一篇文章中所提出的,在文章中使用了正弦函式描述溫度分佈,而且提出了一個著名的論斷:任何連續性的週期訊號都可以由一組適當的正弦曲線組合而成。而這個論斷被當時審查論文的著名數