我想以pytorch张量格式直接将图像从内存加载到python。我通过替换这些行修改了 GetArrayViewFromImage() 函数:
image_memory_view = _GetMemoryViewFromImage(image)
array_view = numpy.asarray(image_memory_view).view(dtype = dtype)
经过:
image_memory_view = _GetMemoryViewFromImage(image)
array_view = torch.as_tensor(image_memory_view, dtype = dtype)
在实践中它太慢了,我将其替换为:
image_memory_view = _GetMemoryViewFromImage(image)
array_view = numpy.asarray(image_memory_view).view(dtype = dtype)
array_view = torch.as_tensor(array_view)
现在我有两个问题:
- 它慢得多,我真的不知道为什么用 numpy 阅读它并转换它会更快。
- 即使我添加了 dtype 参数并且它返回了一个具有正确 dtype 的张量,但它读取它是错误的(例如,无论我选择什么 torch.dtype,numpy 中的 -1000 都被读取为 252),这在使用 numpy 和转换,为什么会这样?