I want to save an image using opencv's imwrite
without any extension. I know image format in cv2.imwrite
is chosen based on the filename
extension. Is there a way to specify the compression format while calling the function, or would I have to rename the file once created?
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_
I think it's not possible to specify the compression of an image while saving it without extension. I would recommend to save it with extension and then use os.rename()
:
import os
import cv2
filename = "image.jpg"
img = ...
cv2.imwrite(filename, img)
os.rename(filename, os.path.splitext(filename)[0])
Hope this helps!
I don't understand your motivation for doing this, but if you want to write a JPEG to disk without the .JPG
extension, or a PNG file without the .PNG
extension, you could simply do the encoding to a memory buffer and then write that to disk.
So, if I load an image like this:
import cv2
# Load image
im = cv2.imread('image.jpg')
I should now be in the same position as you, with an image in my variable im
.
I can now encode the image to a memory buffer, and write that memory buffer to disk without extension:
success, buffer = cv2.imencode(".jpg",im)
buffer.tofile('ExtensionlessFile')
您可以将fileName字符串与仅在调用函数时指定扩展名的字符串连接起来。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.