opencv读取图像和pillow读取图像的转为torch.tensor的区别

问题描述:

有一个git源码是使用pillow读取图像,然后转为tensor后进行resize操作,但是我现在接收到的图像数据是opencv格式的,最简单的操作是我直接将opencv的格式转为pil格式,然后继续下一步就行。但是这样就多了一个数据转换,所以不想这么干,简介的步骤就是将opencv的numpy格式的数据直接转为tensor,然后进行resize。

基于以上需求,在这个过程中,主要问题花在数据对其上,就是需要对比以下转换的数据是否一致

 

import cv2
import torch
from PIL import Image
from torchvision import transforms

#pil加载的图像默认是whc,rgb
image = Image.open("20191101135203728.jpg")

#cv2加载的图像默认是hwc,bgr
img_cv = cv2.imread("20191101135203728.jpg")
# 必须进行转换才行
img_cv = cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB).transpose(2,0,1)

#把两个转换到tensor进行测试
resize_func_tensor = transforms.functional.pil_to_tensor(image)
cp_tensor = torch.tensor(img_cv)
absolute_difference = torch.abs(resize_func_tensor - cp_tensor).sum()
#测试结果为0
print("两种方式的输出结果的绝对差之和:", absolute_difference.item())

 

posted @ 2024-02-28 09:51  海_纳百川  阅读(188)  评论(0)    收藏  举报
本站总访问量