【发布时间】:2021-07-12 12:54:06
【问题描述】:
关于改写问题的更新:
我正在使用 Django 并且已经实现了一个 REST API 图像文件发布。
我这样获取图像对象:
image_obj = request.data['image']
如何获得扩展名?例如,如果文件是image.jpg,我想得到“jpg”作为扩展名。
以下是我最初的问题(您可以忽略,因为目标在上面):
有没有办法确定 jpg、jpeg、png 等图像的类型,以便我可以将其解码回相同的格式?
例如,这里我有一个关于图像文件的 http 帖子,它使用 imdecode 创建一个 OpenCVv 对象,并使用 imencode 重新格式化该对象。
image_obj = request.data['image']
im_cv = cv2.imdecode(np.fromstring(image_obj.read(), np.uint8), cv2.IMREAD_UNCHANGED)
... do something like crop, detection, etc
ret, buf_im_cv = cv2.imencode( '.png', im_cv ) # in this case I have to specify png, what if its jpg, etc
【问题讨论】:
-
.png、.jpg等是图像压缩格式,一旦图像被解码,OpenCV矩阵只存储RGB数据和图像矩阵的维度。所以你可能需要在解码前将图像格式缓存到另一个变量中。 -
imdecode 不需要知道压缩类型,它会查看数据头来决定必须使用哪种压缩技术。如果您想使用相同的编解码器重新编码图像,您可能必须自己评估图像标头(或者可能是 http 标头??)。
标签: python django image opencv