[英]OpenCV - specify format while writing image to file (cv2.imwrite)
我想使用沒有任何擴展名的opencv的imwrite
保存圖像。 我知道cv2.imwrite
圖像格式是基於filename
擴展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_
我認為在保存不帶擴展名的圖像時,不可能指定圖像的壓縮率。 我建議將其保存為擴展名,然后使用os.rename()
:
import os
import cv2
filename = "image.jpg"
img = ...
cv2.imwrite(filename, img)
os.rename(filename, os.path.splitext(filename)[0])
希望這可以幫助!
我不了解您這樣做的動機,但是如果您想在不使用.JPG
擴展名的情況下將JPEG寫入磁盤,或者在不使用.PNG
擴展名的情況下將PNG文件寫入磁盤,則可以簡單地對內存緩沖區進行編碼,然后寫入到磁盤上。
因此,如果我加載這樣的圖像:
import cv2
# Load image
im = cv2.imread('image.jpg')
我現在應該和您處於同一位置,並且在我的變量im
有一個圖像。
我現在可以將映像編碼到內存緩沖區中,然后將該內存緩沖區寫入磁盤而無需擴展:
success, buffer = cv2.imencode(".jpg",im)
buffer.tofile('ExtensionlessFile')
您可以將fileName字符串與僅在調用函數時指定擴展名的字符串連接起來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.