【发布时间】:2018-09-05 19:05:48
【问题描述】:
我有一个以字节为单位的图像:
print(image_bytes)
b'\xff\xd8\xff\xfe\x00\x10Lavc57.64.101\x00\xff\xdb\x00C\x00\x08\x04\x04\x04\x04\x04\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x07\x07\x07\x08\x08\x08\x07\x07\x07\x06\x06\x07\x07\x08\x08\x08\x08\t\t\t\x08\x08\x08\x08\t\t\n\n\n\x0c\x0c\x0b\x0b\x0e\x0e\x0e\x11\x11\x14\xff\xc4\x01\xa2\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\ ... some other stuff
我可以使用 Pillow 将其转换为 NumPy 数组:
image = numpy.array(Image.open(io.BytesIO(image_bytes)))
但我不太喜欢使用 Pillow。有没有办法使用清晰的OpenCV,或者直接使用更好的NumPy,或者其他更快的库?
【问题讨论】:
-
感谢您的反馈,虽然那是 c++,而不是 python。
-
是的,但它与 python 的代码相同,只是括号更少...docs.opencv.org/3.0-beta/modules/imgcodecs/doc/…
-
@Norrius 我读到“我有以字节为单位的图像”和“image_bytes”,并且不得不做出假设。如果不是这种情况,那么 OP 需要在问题中澄清它为什么不同。
-
这是一个 JPEG 图像,因为
ff,d8,ff是 JPEG 签名,所以你需要imdecode()它。看这里...stackoverflow.com/a/49492989/2836621
标签: python python-3.x numpy opencv