15

I am a beginner at opencv and python. I have just installed opencv2.4.9 and enthought canopy-32bit. I am getting error for the following:

import cv2
image = cv2.imread('Lena.jpg')
cv2.imwrite('Mypic',image)

This is what I get:

c:\users\nam\appdata\local\temp\tmpokspbt.py in <module>()
      3 
      4 image = cv2.imread('Lena.jpg')
----> 5 cv2.imwrite('Mypic',image)

error: ..\..\..\..\opencv\modules\highgui\src\loadsave.cpp:275: error: (-2) could not find a writer for the specified extension in function cv::imwrite_
Simon A. Eugster
  • 4,114
  • 4
  • 36
  • 31
Matt
  • 151
  • 1
  • 1
  • 4

4 Answers4

33

you need to give an extension to imwrite(), so it knows, how to save(compress) it.

cv2.imwrite('Mypic.png',image)
# jpg,bmp,png,ppm,pgm,tiff supported 'out-of-the-box,
# webp,jp2 depending on if you compiled in the resp. 3rd party support
# no gif or tga.
berak
  • 39,159
  • 9
  • 91
  • 89
5

You need to make sure you have the image type within the string you give to the imwrite(). imwrite() dose not have a default method to save, thus it is required within the name you give to it. instead of : cv2.imwrite('Mypic',image) you need to write :

cv2.imwrite('Mypic.The_format_you_want_to_save',image)

As an example:

cv2.imwrite('Mypic.jpg',image)
Bananagod
  • 101
  • 2
  • 5
3

Add an extension for the output file like .jpg, .png, etc based on the application.

For example in this case you could use,

import cv2
image = cv2.imread('Lena.jpg')
cv2.imwrite('Mypic.jpg',image)
2

I could solve this problem by simply adding the extension '.jpg' etc at the end of the image and it worked for me!

DrDEE
  • 506
  • 7
  • 14