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

时间:2016-05-03 17:25:14

标签: python image opencv opencv3.0

我想使用opencv的imwrite保存图像,没有任何扩展名。我知道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_

3 个答案:

答案 0 :(得分:3)

我认为在没有扩展名的情况下保存图像时无法指定图像的压缩效果。我建议使用扩展程序保存它,然后使用import os import cv2 filename = "image.jpg" img = ... cv2.imwrite(filename, img) os.rename(filename, filename[:-4])

COMPUTER  |    YEAR    |  RUNS
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾  
compA     |    1989    |  20
compA     |    1990    |  10
compB     |    1991    |  300

希望这有帮助!

答案 1 :(得分:2)

我不知道您这样做的动机,但是如果您想在不带.JPG扩展名的情况下将JPEG写入磁盘或不带.PNG扩展名的PNG文件,则可以简单地执行编码到内存缓冲区,然后将其写入磁盘。

因此,如果我加载这样的图像:

import cv2

# Load image
im = cv2.imread('image.jpg')

我现在应该和您处于同一位置,并且在变量im中有一张图片。

我现在可以将映像编码到内存缓冲区中,然后将该内存缓冲区写入磁盘而无需扩展名:

success, buffer = cv2.imencode(".jpg",im)
buffer.tofile('ExtensionlessFile') 

答案 2 :(得分:0)

您可以将fileName字符串与仅在调用函数时指定扩展名的字符串连接起来。