日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

(转)深度学习中各种图像库的图片读取方式

發布時間:2024/1/8 pytorch 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)深度学习中各种图像库的图片读取方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/u013841196/article/details/81194310

  • 深度學習中各種圖像庫的圖片讀取方式總結

在數據預處理過程中,經常需要寫python代碼搭建深度學習模型,不同的深度學習框架會有不同的讀取數據方式(eg:Caffe的python接口默認BGR格式,Tensorflow默認RGB格式),經常需要借助python圖像庫來讀取圖像并進行一系列的圖像處理工作。

這篇文章總結了Python圖像庫處理數據的基本方式:
1.Opencv
2.PIL(pillow)
3.matplotlib.image
4.scipy.misc
5.skimage
6.Tensorflow


opencv: cv2.imread

opencv是最常用的圖像處理庫

基本圖像操作:

import cv2 import numpy as np #讀入圖片:默認彩色圖,cv2.IMREAD_GRAYSCALE灰度圖,cv2.IMREAD_UNCHANGED包含alpha通道 img = cv2.imread('aa.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 轉換為灰度圖 img1 = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) # 轉換為RGB cv2.imshow('src',img) cv2.imshow('gray',gray) cv2.imshow('RGB',img1) print(img.shape) # (h,w,c) print(img.size) # 像素總數目 print(img.dtype) # 像素類型 cv2.imwrite('test.jpg',img1) # 保存圖像

值得注意的是:
1.opencv讀進來的圖片已經是一個numpy矩陣了,彩色圖片維度是(高度,寬度,通道數)。數據類型是uint8。
2.opencv讀進來的圖片的通道排列是BGR,而不是主流的RGB

Caffe使用opencv處理圖像的基本操作:

import os import numpy as np import cv2 import syscaffe_root = './fancp/caffe/' #指定caffe路徑 sys.path.insert(0, caffe_root + 'python') import caffedef predict(path, deploy, weight):net = caffe.Net( deploy, weight, caffe.TEST) batch_size, channels, height, width = net.blobs['data'].data.shapeX = np.zeros([1,channels,height,width], dtype = np.float32) # caffe的輸入格式[N,C,H,W]img = cv2.imread(path).astype(np.float32)# 讀取圖片,并進行類型轉換Img = cv2.resize(img,(102,102))[11:90,11:90,::-1]# Resize以及ROI操作img -= 127.5img /= 128.0 # 歸一化操作img = np.transpose(img,(2,0,1)) # 通道轉換,有H,W,C轉變成 C,H,W#在深度學習搭建CNN時,往往要做相應的圖像數據處理,比如圖像要擴展維度,比如 擴展成(batch_size,channels,height,width)。img=np.expand_dims(img,axis=0)X[0,:,:,:] = imgnet.blobs['data'].data[...] = Xoutput = net.forward()output = output['logits'][0]print(output) # 輸出結果return 0if __name__ == '__main__':#caffe.set_device(0)#caffe.set_mode_gpu()caffe.set_mode_cpu()model_def = '**.prototxt'model_weights = '**.caffemodel'image = 'test.jpg'result = predict(image, model_def, model_weights)

PIL:PIL.Image.open

PIL即Python Imaging Library,也即為我們所稱的Pillow,是一個很流行的圖像庫,它比opencv更為輕巧,正因如此,它深受大眾的喜愛。

圖像的基本操作:

from PIL import Image import numpy as np img = Image.open('aa.jpg') print(img.format) print(img.size) #注意,省略了通道。 (w,h) print(img.mode) #L為灰度圖,RGB為真彩色,RGBA為加了透明通道 img.show() # 顯示圖片 gray = img.convert('L') # 轉化為灰度圖 gray.show() #pillow讀進來的圖片不是矩陣,我們將圖片轉矩陣 arr = np.array(img) print(arr.shape) print(arr.dtype) #矩陣再轉為圖像 new_im = Image.fromarray(arr) new_im.save('test.png')

注:
1.PIL讀進來的圖像是一個對象,而不是我們所熟知的numpy 矩陣。
2.PIL的通道順序是RGB

圖像操作:

#分離合并通道 r, g, b = img.split() img = Image.merge("RGB", (b, g, r)) img = img.copy() #復制圖像 #ROI獲取 img3 = Image.open('1.jpg') roi = img3.crop((0,0,300,300)) #(左上x,左上y,右下x,右下y)坐標 roi.show()

matplotlib:matplotlib.image.imread

matplotlib多用于科學繪圖

圖像的基本操作:

import matplotlib.pyplot as plt import numpy as np image = plt.imread('aa.jpg') plt.imshow(image) plt.axis('off') #也可以關閉顯示x,y軸上的數字 plt.show() #plt.imread讀入的就是一個矩陣,跟opencv一樣,但彩圖讀進的是RGB,與opencv有區別 print(image.shape) # (h,w,c) print(image.size) print(image.dtype)

綜合例子:

import matplotlib.pyplot as plt import numpy as np im_lol1 = plt.imread('aa.jpg') im_lol2 = plt.imread('aa.jpg') figure = plt.figure(figsize=(10,5)) # 調整顯示圖片的大小 ''' figsize參數:指定繪圖對象的寬度和高度,單位為英寸;dpi參數指定繪圖對象的分辨率, 即每英寸多少個像素,缺省值為80。因此本例中所創建的圖表窗口的寬度為8*80 = 640像素 ''' plt.axis("off")#不顯示刻度 ax = figure.add_subplot(121) # 圖片以1行2列的形式顯示 plt.axis('off') ax.imshow(im_lol1) #第一張圖 ax.set_title('image 1')#給圖片加titile ax = figure.add_subplot(122) plt.axis('off') ax.imshow(im_lol2) ax.set_title('image 2')#給圖片加titile plt.savefig('twp.jpg') plt.show()

scipy.misc:scipy.misc.imread

圖像的基本操作:

from scipy import misc import matplotlib.pyplot as plt im = misc.imread('aa.jpg') print(im.dtype) print(im.size) print(im.shape) misc.imsave('misc1.png',im) plt.imshow(im) plt.show()

:imread和imsave在后來的版本將會被棄用,現在使用imageio.imread和imageio.imwrite。

深度學習中使用misc:

from scipy import misc import numpy as np import matplotlib.pyplot as pltimage = misc.imread('./fancp/aa.jpg') image = misc.imresize(image, (112,96)) image = image.astype(np.float32) image -= 127.5 image /= 128.0 image = image[10:89,10:89,:] image = image.transpose(2, 0, 1) print(image.shape)

skimage:skimage.io.imread

圖像的基本操作:

from skimage import io from skimage import color im = io.imread('aa.jpg') print(im.shape) # numpy矩陣,(h,w,c) print(im.dtype) print(im.size) im3 = color.rgb2grey(im)# 灰度化處理 io.imshow(im3) io.imsave('sk.png',im)

:圖像也是以numpy array形式讀入


Tensorflow:tf.image.decode

1.TensorFlow函數:tf.image.decode_bmp

tf.image.decode_bmp函數:

tf.image.decode_bmp(contents,channels=0,name=None )

將BMP編碼圖像的第一幀解碼為uint8張量。
attr channels表示解碼圖像的期望數量的顏色通道。
接受的值是:
0:使用BMP編碼圖像中的通道數量。
3:輸出RGB圖像。
4:輸出RGBA圖像。

參數:
contents:string類型的Tensor,0維,BMP編碼的圖像。
channels:可選的int,默認為0。
name:操作的名稱(可選)。

返回值:
函數返回uint8類型的Tensor。

2.TensorFlow函數:tf.image.decode_jpeg
tf.image.decode_jpeg函數:

tf.image.decode_jpeg(contents,channels=0,ratio=1,fancy_upscaling=True,try_recover_truncated=False,acceptable_fraction=1,dct_method='',name=None )

將JPEG編碼圖像解碼為uint8張量。
attr channels表示解碼圖像的期望數量的顏色通道。
接受的值是:
0:使用JPEG編碼圖像中的通道數量。
1:輸出灰度圖像。
3:輸出RGB圖像。
如果需要,JPEG編碼的圖像將被轉換以匹配請求的顏色通道數量。
attr ratio允許在解碼過程中將圖像縮小整數倍。允許的值為:1、2、4和8。這比稍后縮小圖像要快得多。

參數:
contents:string類型的Tensor,0維,JPEG編碼的圖像。
channels:可選的int,默認為0,解碼圖像的顏色通道數量。
ratio:可選的int,默認為1,縮小比例。
fancy_upscaling:可選的bool,默認為True,如果為true,則使用更慢但更好的色度平面升級(僅限yuv420 / 422)。
try_recover_truncated:可選的bool,默認為False,如果為true,則嘗試從截斷的輸入中恢復圖像。
acceptable_fraction:可選的float,默認為1,在截斷輸入之前所需的最小行數被接受。
dct_method:可選的string,默認為”“,用于指定用于解壓縮的算法提示的字符串;默認為“”,映射到系統特定的默認值。當前有效值為[“INTEGER_FAST”,“INTEGER_ACCURATE”]。
name:操作的名稱(可選)。

返回值:
該tf.image.decode_jpeg函數將返回uint8類型的Tensor。

3.TensorFlow函數:tf.image.decode_png
tf.image.decode_png函數:

tf.image.decode_png(contents,channels=0,dtype=tf.uint8,name=None )

將PNG編碼的圖像解碼為uint8或uint16張量。
attr channels表示解碼圖像的期望數量的顏色通道。
接受的值是:
0:使用PNG編碼圖像中的通道數量。
1:輸出灰度圖像。
3:輸出RGB圖像。
4:輸出RGBA圖像。
如果需要,將PNG編碼的圖像轉換為與請求的顏色通道數匹配。
此操作還支持解碼JPEG和非動畫GIF,因為界面相同,但使用tf.image.decode_image將更清晰。

參數:
contents:string類型的Tensor,0維,PNG編碼的圖像。
channels:可選的int,默認為0,解碼圖像的顏色通道數量。
dtype:可選的tf.DType,其來自:tf.uint8,tf.uint16,默認為tf.uint8。
name:操作的名稱(可選)。

返回值:
該函數返回dtype類型的Tensor。

4.TensorFlow函數:tf.image.decode_image
tf.image.decode_image函數

tf.image.decode_image(contents,channels=None,name=None )

decode_bmp,decode_gif,decode_jpeg和decode_png的方便函數。
檢測圖像是否為BMP,GIF,JPEG或PNG,并執行相應的操作將輸入字節string轉換為類型uint8的Tensor。
注意: decode_gif返回一個4維數組[num_frames、高度、寬度、3],而不是decode_bmp、decode_jpeg和decode_png,后者返回3維數組[height, width, num_channels]。如果您使用BMP、JPEG或PNG文件混合GIF文件,請確保在構造圖表時考慮到這一點。

參數:
contents:0-D string,編碼的圖像字節。
channels:可選的int,默認為0,解碼圖像的顏色通道數量。
name:操作的名稱(可選)

返回值:
對于BMP、JPEG和PNG圖像,形狀為[height, width, num_channels]或者對于GIF圖像,形狀為[num_frames, height, width, 3]的類型為uint8的Tensor。

可能引發的異常:
ValueError:通道數量不正確。

5.TensorFlow將raw格式轉換為張量
tf.decode_raw函數

decode_raw ( bytes , out_type , little_endian = None , name = None

將字符串的字節重新解釋為數字的向量。

ARGS:
bytes:字符串類型的張量。所有元素的長度必須相同。
out_type:一個選自:tf.half,tf.float32,tf.float64,tf.int32,tf.uint8,tf.int16,tf.int8 以及 tf.int64 的 tf.DType 。
little_endian:可選的 bool 值,默認為 True。輸入字節是否為小字節順序。忽略存儲在單個字節 (如 uint8) 中的 out_type 值。
name:操作的名稱(可選)。

返回:
out_type 類型的張量。一個比輸入字節多一個維度的張量。添加的維度的大小將等于字節的元素的長度除以要表示 out_type 的字節數。


總結:
除了opencv讀入的彩色圖片以BGR順序存儲外,其他所有圖像庫讀入彩色圖片都以RGB存儲。
除了PIL讀入的圖片是img類之外,其他庫讀進來的圖片都是以numpy 矩陣。

參考
https://www.cnblogs.com/skyfsm/p/8276501.html
https://www.w3cschool.cn/tensorflow_python/


注:博眾家之所長,集群英之薈萃。

總結

以上是生活随笔為你收集整理的(转)深度学习中各种图像库的图片读取方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一本色道久久88综合日韩精品 | 狠狠插狠狠干 | aaa亚洲 | 天堂综合在线 | 久久天堂视频 | 色偷偷噜噜噜亚洲男人的天堂 | 国语对白做受 | 红桃一区二区三区 | 久久久国产亚洲 | 国产成人久久777777 | 天天干干| 又黄又免费的网站 | 一区二区国产精品 | 亚洲成人免费在线视频 | 一区二区三区激情视频 | 日b免费视频 | 国产熟女一区二区三区五月婷 | 免费看污视频的网站 | 欧美成人综合网站 | 强公把我次次高潮hd | 精品女厕偷拍一区二区 | 操碰人人 | 日韩av日韩 | 国产21区| 欧美六区 | 亚洲视频免费播放 | 久久久新 | 91九色网站 | 国产激情在线看 | 无遮挡又爽又刺激的视频 | av在线资源网 | 欧美一区二区日韩 | 麻豆精品在线播放 | 色婷婷精品 | 91久久久久久久久久久 | 国产精品免费入口 | 日韩一级在线 | 手机av在线免费观看 | 夜夜福利 | 美日韩免费视频 | 欧美日韩在线高清 | 青草操 | 黄瓜视频在线观看污 | 日本一区二区在线免费观看 | 国产成人短视频在线观看 | 一区二区高潮 | 泽村玲子av | 国语对白真实视频播放 | 日本www网站| 日韩视频网站在线观看 | 日剧网 | 日韩porn| av噜噜色 | 91丨porny丨对白 | 神马久久影院 | 一本一道久久a久久精品蜜桃 | jizz欧美大片 | 免费观看一区二区三区 | 亚洲精品尤物 | 中文字幕免费在线看线人动作大片 | 99自拍偷拍 | 亚洲永久免费精品 | 依人成人综合网 | 我要看一级黄色片 | 久久免费视频99 | 欧美另类一区 | 老外一级黄色片 | 亚洲人成电影在线播放 | 91看片网页版 | 麻豆成人久久精品一区二区三区 | 欧美a√| 国产三级视频网站 | 丁香花五月 | av国语 | 精品成人一区二区三区久久精品 | 欧美精品乱人伦久久久久久 | 国产伦精品一区二区三区免.费 | 偷拍视频久久 | 中文在线亚洲 | 久久免费高清视频 | 国产精品入口66mio | 精品国产亚洲av麻豆 | 国产精品久久99 | 国产999久久久 | a视频| 天堂av在线中文 | 波多野结衣小视频 | 欧美大尺度床戏做爰 | 国产精品毛片一区二区在线看舒淇 | wwwxxxx在线观看| 亚洲丝袜在线观看 | a毛片在线| 久久亚洲av无码西西人体 | 香蕉视频黄色 | 公侵犯人妻一区二区三区 | 69精品无码成人久久久久久 | 老局长的粗大高h | 182tv福利视频| 天堂影院一区二区 |