簡體   English   中英

OpenCV-在將圖像寫入文件時指定格式(cv2.imwrite)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM