Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OpenCV:如果从缓冲区读取,如何获取图像格式?_Python_Opencv_Image Processing - Fatal编程技术网

Python OpenCV:如果从缓冲区读取,如何获取图像格式?

Python OpenCV:如果从缓冲区读取,如何获取图像格式?,python,opencv,image-processing,Python,Opencv,Image Processing,我从缓冲区读取图像(格式未知,最常见的是PNG或JPG)。 我可以用cv2.imdecode对它进行解码,我甚至可以检查它是否有效(imdecode返回非None) 但是我怎样才能显示我刚刚读过的缓冲区的图像类型(PNG、JPG或其他内容)?有一个标准的Python函数imghdr.what。这是rulez ^__^你不能。一旦它是cv::Mat或numpy数组,它就不再知道它是由什么组成的。一旦读取图像数据并将其存储到缓冲区中,就是这样。您无法确定它是什么类型的图像,因为这是解码图像数据的目的

我从缓冲区读取图像(格式未知,最常见的是PNG或JPG)。 我可以用cv2.imdecode对它进行解码,我甚至可以检查它是否有效(
imdecode
返回非None)


但是我怎样才能显示我刚刚读过的缓冲区的图像类型(PNG、JPG或其他内容)?

有一个标准的Python函数
imghdr.what
。这是rulez


^__^

你不能。一旦它是cv::Mat或numpy数组,它就不再知道它是由什么组成的。一旦读取图像数据并将其存储到缓冲区中,就是这样。您无法确定它是什么类型的图像,因为这是解码图像数据的目的!不,不,我在我的web表单处理器中得到一些原始图像数据(用JPG、PNG等编码)。它可能已损坏,可能有不正确的扩展名。OpenCV解码器可以自动选择编解码器并对其进行解码。它甚至可以检查编码是否正确(未损坏)。但我仍然不知道如何获得正确的文件类型(设置要保存的文件的扩展名)。我知道我不能相信我的用户会发送我唯一正确的文件和正确的扩展名。我知道OpenCV在使用
imdecode
时会以某种方式读取文件头。但是我不知道如何从OpenCV获取文件类型。