最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式實(shí)例

 更新時(shí)間:2020年06月02日 10:24:54   作者:若曦爹  
這篇文章主要介紹了pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式方法:先轉(zhuǎn)成numpy通用的格式,再將其轉(zhuǎn)換成opencv格式。

pytorch讀取的數(shù)據(jù)使用loaddata這類(lèi)函數(shù)實(shí)現(xiàn)。pytorch網(wǎng)絡(luò)輸入圖像的格式為(C, H, W),就是(通道數(shù),高,寬)而numpy中圖像的格式為(H,W,C)。

那就將其通道調(diào)換一下。用到函數(shù)transpose。

轉(zhuǎn)換方法如下

例如A 的格式為(c,h,w) 那么經(jīng)過(guò)

A = A.transpose(1,2,0)

后就變成了(h,w,c)了

然后用語(yǔ)句

B= cv2.cvtColor(A,cv2.COLOR_RGB2BGR)

結(jié)果就變成opencv可用的圖像了。 如果不做transpose轉(zhuǎn)換,那么得到的圖像是一個(gè)1*h大小的圖.......

完整代碼:

變換部分:

一般的pytorch會(huì)進(jìn)行裁剪 放縮 歸一化等操作。例如

transforms = Compose([
      ToTensor(),//將數(shù)據(jù)除以255加載進(jìn)來(lái)
      Resize(768),//裁剪768*768大小的圖像
      ConvertMaskID(Cityscapes.classes),//與這個(gè)事無(wú)關(guān)不用去管它
      Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])// 歸一化 利用均值方差歸一化
    ])

那么被處理的數(shù)據(jù)就要反歸一化回來(lái)唄

代碼如下:三通道的數(shù)據(jù)

      image_idx = x[idx].cuda().data.cpu().float().numpy() #經(jīng)過(guò)上面處理的數(shù)據(jù) 在gpu上給取出來(lái)放在cpu上。是個(gè)numpy類(lèi)型
      image_idx[0] = image_idx[0] * std[0] + mean[0]#三個(gè)通道分別進(jìn)行反歸一化...按公式來(lái)的
      image_idx[1] = image_idx[1] * std[1] + mean[1]
      image_idx[2] = image_idx[2] * std[2] + mean[2]
      
      image_idx[0][image_idx[0] > 1] = 1#對(duì)最大值最小值做次保護(hù)
      image_idx[0][image_idx[0] < 0] = 0
      
      image_idx[1][image_idx[1] > 1] = 1
      image_idx[1][image_idx[1] < 0] = 0
      
      image_idx[2][image_idx[2] > 1] = 1
      image_idx[2][image_idx[2] < 0] = 0
      
      image_idx = image_idx.transpose(1,2,0)

      img1 = cv2.cvtColor(image_idx * 255,cv2.COLOR_RGB2BGR)#轉(zhuǎn)成opencv認(rèn)識(shí)的玩意
      tpath1="dddd/"+"yy0" + str(100 * i + idx) + '.jpg'
      cv2.imwrite(tpath1, img1) 

補(bǔ)充知識(shí):pytorch的tensor,Image,numpy和opencv四種格式的相互轉(zhuǎn)換

話不多說(shuō),先上代碼

# -*- coding: utf-8 -*-
# @Time  : 2019/4/28 13:52
# @Author : ljf
import torch
from torchvision import transforms
from PIL import Image
import numpy as np
import cv2

# 1.1 tensor2Image Image格式進(jìn)行繪圖,展示
tensor1 = torch.randint(0,255,(300,300))
transform1 = transforms.ToPILImage(mode="L")
image1 = transform1(np.uint8(tensor1.numpy())) # Image接受的圖像格式必須為uint8,否則就會(huì)報(bào)錯(cuò)
print(tensor1.size())
print(image1)
# image.show()
image1.save("gray.jpg")

# 1.2 Image2tensor tensor格式方便使用torch進(jìn)行數(shù)據(jù)增強(qiáng),也是模型訓(xùn)練的格式
# 先剪切,再轉(zhuǎn)為tensor。底層也是PIL實(shí)現(xiàn)的
transform2 = transforms.Compose([transforms.RandomCrop([200,200],padding=10),transforms.ToTensor()])
image2 = Image.open("gray.jpg")
tensor2 = transform2(image2)
print(tensor2.size())

# 2.1 tensor2numpy 再1.1中也用到了,numpy格式主要用于容易轉(zhuǎn)換數(shù)據(jù)格式,也有利于轉(zhuǎn)為opencv格式。
array1 = tensor1.numpy()
print(array1.shape)
print(array1.dtype)

# 2.2 numpy2tensor 1.2有介紹,不再贅述
tensor3 = torch.Tensor(array1)
tensor4 = transforms.ToTensor()(array1)
print(tensor3.size())
print(tensor4.size()) # 會(huì)增加一個(gè)維度

# 3.1 numpy2opencv openc格式方便畫(huà)目標(biāo)框,圖片上面寫(xiě)字(Image格式也可以實(shí)現(xiàn),不是很熟悉,,,)
# opencv 讀取出來(lái)就是numpy的數(shù)據(jù)格式
cv2.imshow("img",np.uint8(array1))
# cv2.waitKey()
# cv2.destroyAllWindows()

# 3.2 opencv2numpy
array2 = cv2.imread("./gray.jpg") # 這里使用opencv讀取的是三通道,plt讀取的是單通道。。暫時(shí)還沒(méi)搞懂
print(array2.shape)
print(array2.dtype)

# 4.1 opecv2Image
image3 = Image.fromarray(array2,mode="RGB")
# image3.show()

# 4.2 Image2opencv
# 這里有兩種方式,一種稍復(fù)雜點(diǎn),但是可以保存數(shù)據(jù)形狀
array3 = transforms.ToTensor()(image3).numpy()

# Image自帶的屬性,但是會(huì)打亂數(shù)據(jù)為一維
list1 = list(image3.getdata())
print(array3.shape)
print(list1)

上面的四種格式轉(zhuǎn)換時(shí)在做一個(gè)“圖像分類(lèi)”的項(xiàng)目經(jīng)常用到的,比如保存圖片,圖片上面加中文等等。因?yàn)檫@些代碼不是很常用,不熟練,所以每次都要在網(wǎng)上找下。這個(gè)博文也方便我來(lái)查找,大家有需要的也可以進(jìn)行保存。

后續(xù)更新解決opecv,matplotlib顯示中文問(wèn)題,以及分類(lèi)模型中加入評(píng)價(jià)指標(biāo)confusion matrix

歡迎大家留言批評(píng)指正

以上這篇pytorch讀取圖像數(shù)據(jù)轉(zhuǎn)成opencv格式實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • django利用request id便于定位及給日志加上request_id

    django利用request id便于定位及給日志加上request_id

    這篇文章主要介紹了django利用request id便于定位及給日志加上request_id的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧
    2018-08-08
  • 使用Python實(shí)現(xiàn)獲取Apollo配置

    使用Python實(shí)現(xiàn)獲取Apollo配置

    Apollo是一款可靠的分布式配置管理中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,本文將介紹如何在Python項(xiàng)目中輕松獲取和使用Apollo配置中心的配置信息,需要的可以參考下
    2024-11-11
  • 徹底搞懂 python 中文亂碼問(wèn)題(深入分析)

    徹底搞懂 python 中文亂碼問(wèn)題(深入分析)

    現(xiàn)在有的小伙伴為了躲避中文亂碼的問(wèn)題甚至代碼中不使用中文,注釋和提示都用英文,我曾經(jīng)也這樣干過(guò),但這并不是解決問(wèn)題,而是逃避問(wèn)題,今天我們一起徹底解決 Python 中文亂碼的問(wèn)題
    2020-02-02
  • python簡(jiǎn)單利用字典破解zip文件口令

    python簡(jiǎn)單利用字典破解zip文件口令

    這篇文章主要給大家介紹了關(guān)于python簡(jiǎn)單利用字典破解zip文件口令的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python多線程實(shí)現(xiàn)模擬火車(chē)站售票

    Python多線程實(shí)現(xiàn)模擬火車(chē)站售票

    這篇文章主要為大家詳細(xì)介紹了Python多線程實(shí)現(xiàn)模擬火車(chē)站售票,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python安裝模塊的常見(jiàn)問(wèn)題及解決方法

    Python安裝模塊的常見(jiàn)問(wèn)題及解決方法

    下面小編就為大家分享一篇Python安裝模塊的常見(jiàn)問(wèn)題及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • python實(shí)現(xiàn)打開(kāi)手機(jī)app并點(diǎn)擊操作

    python實(shí)現(xiàn)打開(kāi)手機(jī)app并點(diǎn)擊操作

    這篇文章主要介紹了python實(shí)現(xiàn)打開(kāi)手機(jī)app并點(diǎn)擊操作,本文分為兩部分一部分是打開(kāi)應(yīng)用,第二部分是調(diào)式手機(jī)連接電腦,需要的朋友可以參考下
    2022-04-04
  • PyCharm 2020.2 安裝詳細(xì)教程

    PyCharm 2020.2 安裝詳細(xì)教程

    這篇文章主要介紹了PyCharm 2020.2 安裝詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Django如何實(shí)現(xiàn)RBAC權(quán)限管理

    Django如何實(shí)現(xiàn)RBAC權(quán)限管理

    這篇文章主要介紹了Django如何實(shí)現(xiàn)RBAC權(quán)限管理問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python?shapefile轉(zhuǎn)GeoJson的2種方式實(shí)例

    Python?shapefile轉(zhuǎn)GeoJson的2種方式實(shí)例

    geojson是地圖可視化系統(tǒng)中最常用的地理數(shù)據(jù)格式,幾乎所有主流地圖可視化庫(kù)或框架都支持geojson數(shù)據(jù)的加載,下面這篇文章主要給大家介紹了關(guān)于Python?shapefile轉(zhuǎn)GeoJson的2種方式的相關(guān)資料,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

隆尧县| 昌邑市| 茌平县| 鄂州市| 哈巴河县| 萝北县| 佛教| 会理县| 晋中市| 廉江市| 延寿县| 乐至县| 依安县| 沂南县| 天水市| 名山县| 高尔夫| 嘉兴市| 平原县| 新化县| 阿坝县| 泾阳县| 绥宁县| 洛川县| 西吉县| 佛学| 开原市| 建阳市| 丹江口市| 营山县| 平山县| 游戏| 西藏| 苗栗市| 民丰县| 察雅县| 平远县| 炎陵县| 闽侯县| 亳州市| 河间市|