Pytorch 使用opnecv讀入圖像由HWC轉(zhuǎn)為BCHW格式方式
傳統(tǒng)使用opencv自帶的swapaxes進行轉(zhuǎn)換,然后使用pytorch的from_numpy轉(zhuǎn)為tensor
例如:
img = img.swapaxes(1,2).swapaxes(0,1)
但是有一個常用的圖像增廣模塊albumentations模塊中的img_to_tensor進行直接轉(zhuǎn)換
注意:我這里使用unsqueeze是為了驗證模型的輸出,如果使用pytorch的dataset則不需要使用這個操作
補充知識:pytorch只用中要注意通道問題
cv讀進來的是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() 有兩層含義,一個是轉(zhuǎn)化成Tensor,另一個是進行歸一化,此段代碼,沒有采用此語句,而是分兩步完成,因為img_dis,已經(jīng)實現(xiàn)歸一化。
以上這篇Pytorch 使用opnecv讀入圖像由HWC轉(zhuǎn)為BCHW格式方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Pycharm配置遠(yuǎn)程SSH服務(wù)器實現(xiàn)(切換不同虛擬環(huán)境)
本文主要介紹了Pycharm配置遠(yuǎn)程SSH服務(wù)器實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02使用Python快速搭建HTTP服務(wù)和文件共享服務(wù)的實例講解
今天小編就為大家分享一篇使用Python快速搭建HTTP服務(wù)和文件共享服務(wù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Python使用DPKT實現(xiàn)分析數(shù)據(jù)包
dpkt項目是一個Python模塊,主要用于對網(wǎng)絡(luò)數(shù)據(jù)包進行解析和操作,z這篇文章主要為大家介紹了python如何利用DPKT實現(xiàn)分析數(shù)據(jù)包,有需要的可以參考下2023-10-10python實現(xiàn)簡單tftp(基于udp協(xié)議)
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡單tftp,基于udp協(xié)議,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07使用Python-OpenCV向圖片添加噪聲的實現(xiàn)(高斯噪聲、椒鹽噪聲)
這篇文章主要介紹了使用Python-OpenCV向圖片添加噪聲的實現(xiàn)(高斯噪聲、椒鹽噪聲) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05Pygame庫200行代碼實現(xiàn)簡易飛機大戰(zhàn)
本文主要介紹了Pygame庫200行代碼實現(xiàn)簡易飛機大戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12