python - 如果没有图像处理Python库(Pillow和cv2)无法读取,如何解码这个二进制图像文件?

标签 python opencv python-imaging-library

我正在尝试使用 python 中的 Pillow 和 cv2 来读取此文件。然而,这两个库都未能做到这一点。

文件是 here在 Google 云端硬盘上。

Pillow 引发“OSError:无法识别图像文件 0.jpg” cv2 返回无

此二进制文件的扩展名为“.jpg”,可以使用 Window 的照片查看器轻松查看。

enter image description here

但是,我想在 python 中读取这个二进制文件并将其解码为图像。

有什么想法吗?

最佳答案

你的文件实际上是一个JXR文件,你可以看到前几个字节是:

49 49 BC

如果将其加载到十六进制编辑器中,例如 http://hexed.it

签名已在 IANA 注册,请参阅 here .


您可以使用 imagecodecs 来阅读它像这样:

import imagecodecs
from pathlib import Path

# Slurp entire image data as binary
jxr = Path('0.jpg').read_bytes()

# Make into Numpy array
na = imagecodecs.jpegxr_decode(jxr)

print(na.shape)        # prints (256, 512, 3)

或者,您可以在终端中使用 ImageMagick 将 JXR 转换为不太微软的东西:

magick input.jxr output.jpg

或者,如果您有旧的 v6 ImageMagick,请使用:

convert input.jxr output.jpg

关于python - 如果没有图像处理Python库(Pillow和cv2)无法读取,如何解码这个二进制图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68972564/

相关文章:

python - 使用 OpenCV/Python 读取和保存 12 位原始拜耳图像

python - 如何从内存文件创建 PIL 图像?

python - 将二进制图像划分为 4x4 Python 并计算像素

python - 我应该如何将包注册到 PyPI?

python - 是否有一种标准方法可以列出包中 Python 模块的名称?

python - 使用 SQLAlchemy 在 Flask 中卡住 drop_all()

python - 显示拜耳格式图像的像素

python - 使用CFFI释放内存时 "MemoryError: Stack overflow"是什么意思?

python - 使用 ctypes 将 OpenCV 图像作为函数参数传递

python - 如何根据 python 中的自定义蒙版裁剪图像?