Pytorch 使用opnecv讀入圖像由HWC轉(zhuǎn)為BCHW格式方式
傳統(tǒng)使用opencv自帶的swapaxes進(jìn)行轉(zhuǎn)換,然后使用pytorch的from_numpy轉(zhuǎn)為tensor
例如:
img = img.swapaxes(1,2).swapaxes(0,1)
但是有一個(gè)常用的圖像增廣模塊albumentations模塊中的img_to_tensor進(jìn)行直接轉(zhuǎn)換

注意:我這里使用unsqueeze是為了驗(yàn)證模型的輸出,如果使用pytorch的dataset則不需要使用這個(gè)操作
補(bǔ)充知識(shí):pytorch只用中要注意通道問(wèn)題
cv讀進(jìn)來(lái)的是BGR圖像,通道是hcw,在torch中使用要注意維度轉(zhuǎn)換
def __getitem__(self, idx):
'''Load image.
Args:
idx: (int) image index.
img_org = Image.open(self.root_src + 'reference_cutBlock' + fname_org)
Returns:
img: (tensor) image tensor.
loc_targets: (tensor) location targets.
cls_targets: (tensor) class label targets.
'''
# Load image
fname_org = self.fnames[idx]
img_org = cv2.imread(self.root_src + 'dn_dataset/' + fname_org)
# img_org = np.asarray(img_org)
coin = np.random.randint(0, 50)
img_dis = skimage.util.random_noise(img_org, mode='gaussian', seed=None,
var=(coin / 255.0) ** 2) # add gaussian noise
# img_dis = img_dis[:, :, (2, 1, 0)] # bgr012 to rgb210
img_dis = img_dis.transpose([2, 0, 1]) # hwc to chw
img_dis = img_dis[(2, 1, 0), :, :] # bgr012 to rgb210
img_org = img_org[:, :, (2, 1, 0)]/255.0 # bgr012 to rgb210
img_org = img_org.transpose([2, 0, 1]) # hwc to chw
img_dis = torch.from_numpy(img_dis).float()
img_org = torch.from_numpy(img_org).float()
# fname_org_dis = self.fnames_dis[idx]
# img_dis = Image.open(self.root_src + 'distorted_train_block/' + fname_org_dis)
# if img_org.mode != 'RGB':
# img_org = img_org.convert('RGB')
#
# if img_dis.mode != 'RGB':
# img_dis = img_dis.convert('RGB')
# img_org = self.transform(img_org)
# img_dis = self.transform(img_dis)
return img_dis, img_org
transforms.ToTensor() 有兩層含義,一個(gè)是轉(zhuǎn)化成Tensor,另一個(gè)是進(jìn)行歸一化,此段代碼,沒(méi)有采用此語(yǔ)句,而是分兩步完成,因?yàn)閕mg_dis,已經(jīng)實(shí)現(xiàn)歸一化。
以上這篇Pytorch 使用opnecv讀入圖像由HWC轉(zhuǎn)為BCHW格式方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Pycharm配置遠(yuǎn)程SSH服務(wù)器實(shí)現(xiàn)(切換不同虛擬環(huán)境)
本文主要介紹了Pycharm配置遠(yuǎn)程SSH服務(wù)器實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
使用Python快速搭建HTTP服務(wù)和文件共享服務(wù)的實(shí)例講解
今天小編就為大家分享一篇使用Python快速搭建HTTP服務(wù)和文件共享服務(wù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Python使用DPKT實(shí)現(xiàn)分析數(shù)據(jù)包
dpkt項(xiàng)目是一個(gè)Python模塊,主要用于對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行解析和操作,z這篇文章主要為大家介紹了python如何利用DPKT實(shí)現(xiàn)分析數(shù)據(jù)包,有需要的可以參考下2023-10-10
python實(shí)現(xiàn)簡(jiǎn)單tftp(基于udp協(xié)議)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單tftp,基于udp協(xié)議,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Python操作Sqlite正確實(shí)現(xiàn)方法解析
我們今天將會(huì)在這篇文章中分步驟為大家詳細(xì)介紹一下有關(guān)Python操作Sqlite的相關(guān)應(yīng)用方式,希望大家可以從中獲得一些幫助2020-02-02
使用Python-OpenCV向圖片添加噪聲的實(shí)現(xiàn)(高斯噪聲、椒鹽噪聲)
這篇文章主要介紹了使用Python-OpenCV向圖片添加噪聲的實(shí)現(xiàn)(高斯噪聲、椒鹽噪聲) ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
Pygame庫(kù)200行代碼實(shí)現(xiàn)簡(jiǎn)易飛機(jī)大戰(zhàn)
本文主要介紹了Pygame庫(kù)200行代碼實(shí)現(xiàn)簡(jiǎn)易飛機(jī)大戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12

