OpenCV-在将图像写入文件时指定格式(cv2.imwrite)

kam*_*pta 8 python opencv image opencv3.0

我想使用imwrite没有任何扩展名的opencv保存图像。我知道图像格式cv2.imwrite是根据filename扩展名选择的。是否可以在调用函数时指定压缩格式,还是一旦创建文件就必须重命名文件?

cv2.imwrite(filename, img)
[Out]: /home/travis/miniconda/conda-bld/work/opencv-3.1.0/modules/imgcodecs/src/loadsave.cpp:459: error: (-2) could not find a writer for the specified extension in function imwrite_
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 2

我不明白你这样做的动机,但如果你想将不带扩展名的 JPEG 写入磁盘.JPG,或不带扩展名的 PNG 文件.PNG,你可以简单地对内存缓冲区进行编码,然后将其写入磁盘。

所以,如果我加载这样的图像:

import cv2

# Load image
im = cv2.imread('image.jpg')
Run Code Online (Sandbox Code Playgroud)

我现在应该处于与您相同的位置,并且我的变量中有一个图像im

我现在可以将图像编码到内存缓冲区,并将该内存缓冲区写入磁盘而不进行扩展:

success, buffer = cv2.imencode(".jpg",im)
buffer.tofile('ExtensionlessFile') 
Run Code Online (Sandbox Code Playgroud)