我正在尝试使用tornado和opencv构建一个在线服务器进行一些图像处理工作。
现在我可以根据此答案在上传的html表单中加载字节字符串中的图像:Python OpenCV load image from byte string
nparr = np.fromstring(img_str, np.uint8)
问题是我必须在np读取时指定文件是否为uint8 / uint16。在这种情况下,用户可能会同时上传uint8和uint16(灰度)图像,因此这个函数可能无法正常工作,因为我不知道如何在解码图像之前获取数据类型信息。
字节字符串的一个例子就是这个
{bytes} b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00\xc0\x00\xc0\x00\x00\xff\xe1\x0bnExif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x12\x00\xfe
我知道cv2.imread可以自动检测通道深度,但它不能用于字节串。是否还有其他cv2函数可能需要字节字符串?或者是否可以让numpy自动检测数据类型?
提前致谢!