我想使用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_
答案 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字符串与仅在调用函数时指定扩展名的字符串连接起来。