将 numpy ndarray 转换为 PIL 并将其转换为张量
Convert numpy ndarray to PIL and and convert it to tensor
def camera(transform):
capture = cv2.VideoCapture(0)
while True:
ret, frame = capture.read()
cv2.imshow('video', frame)
# esc
if cv2.waitKey(1) == 27:
photo = frame
break
capture.release()
cv2.destroyAllWindows()
img = Image.fromarray(cv2.cvtColor(photo, cv2.COLOR_BGR2RGB))
img = img.resize([224, 224], Image.LANCZOS)
if transform is not None:
img = transform(img).unsqueeze(0)
return img
这是我从相机获取图像的代码,
image_tensor = img.to(device)
而且我在上面一行有错误...
Traceback (most recent call last):
File "E:/PycharmProjects/ArsElectronica/image_captioning/sample.py", line 126, in <module>
main(args)
File "E:/PycharmProjects/ArsElectronica/image_captioning/sample.py", line 110, in main
caption = Image_Captioning(args, img)
File "E:/PycharmProjects/ArsElectronica/image_captioning/sample.py", line 88, in Image_Captioning
image_tensor = img.to(device)
AttributeError: 'Image' object has no attribute 'to'
错误是这样的
如果我将图像作为 png 文件并使用 PIL 重新加载它,它就可以工作。
但是我想要的是不保存直接使用图片
请...有人救救我...
您可以使用 torchvision.transforms.ToTensor
:
将 PIL.Image
转换为 torch.Tensor
if transform is not None:
img = transform(img).unsqueeze(0)
tensor = T.ToTensor()(img)
return tensor
已将 torchvision.transforms
导入为 T
def camera(transform):
capture = cv2.VideoCapture(0)
while True:
ret, frame = capture.read()
cv2.imshow('video', frame)
# esc
if cv2.waitKey(1) == 27:
photo = frame
break
capture.release()
cv2.destroyAllWindows()
img = Image.fromarray(cv2.cvtColor(photo, cv2.COLOR_BGR2RGB))
img = img.resize([224, 224], Image.LANCZOS)
if transform is not None:
img = transform(img).unsqueeze(0)
return img
这是我从相机获取图像的代码,
image_tensor = img.to(device)
而且我在上面一行有错误...
Traceback (most recent call last):
File "E:/PycharmProjects/ArsElectronica/image_captioning/sample.py", line 126, in <module>
main(args)
File "E:/PycharmProjects/ArsElectronica/image_captioning/sample.py", line 110, in main
caption = Image_Captioning(args, img)
File "E:/PycharmProjects/ArsElectronica/image_captioning/sample.py", line 88, in Image_Captioning
image_tensor = img.to(device)
AttributeError: 'Image' object has no attribute 'to'
错误是这样的
如果我将图像作为 png 文件并使用 PIL 重新加载它,它就可以工作。 但是我想要的是不保存直接使用图片
请...有人救救我...
您可以使用 torchvision.transforms.ToTensor
:
PIL.Image
转换为 torch.Tensor
if transform is not None:
img = transform(img).unsqueeze(0)
tensor = T.ToTensor()(img)
return tensor
已将 torchvision.transforms
导入为 T