Saltar al contenido

Ipython cv2.imwrite () no guarda la imagen

Sofía, parte de este gran equipo, nos hizo el favor de redactar esta sección ya que conoce perfectamente este tema.

Solución:

Como regla general y absoluta, Ud. tener para proteger sus cadenas de ruta de Windows (que contienen barras invertidas) con r prefix o se interpretan algunos caracteres (por ejemplo: n,b,v,x aaaay tlista completa aquí):

entonces al hacer esto:

cv2.imwrite('C:UsersNiladriDesktoptropical_image_sig5.bmp', img2)

estás tratando de guardar en C:UsersNiladriDesktopropical_image_sig5.bmp

Y lo molesto con imread y imwrite es que esas funciones no generan excepciones en los errores, sino que fallan en silencio. imwrite devoluciones False

>>> cv2.imread("D:/nonexisting.jpg")  # this returns None, no error
>>> s = cv2.imread("D:/sloth_book.jpg")  # this works
>>> s
array([[[250, 250, 250],
        [246, 246, 246],
        [255, 255, 255],
        ...,
>>> cv2.imwrite("inexistent_dir/file.jpg",s)  # dir doesn't exist, write fails
False

Por lo tanto, debe verificar el valor de retorno de esas funciones.

Hacer esto:

if not cv2.imwrite(r'C:UsersNiladriDesktoptropical_image_sig5.bmp', img2):
     raise Exception("Could not write image")

Nota: la lectura funciona bien porque las letras mayúsculas “escapadas” no tienen un significado particular en python 2 (U y N tener un significado en python 3 por lo que no habría funcionado)

Y si hay un error, el programa ahora se queja en voz alta.

Como sugirió Jean, el error se debe a que se interpreta como una secuencia de escape. Por lo tanto, siempre es más seguro usar os.path.join() ya que es más multiplataforma y no necesita preocuparse por el problema de la secuencia de escape. Por ejemplo, en su caso, no necesita preocuparse por los primeros argumentos, ya que ese es su directorio de inicio

import os
cv2.imwrite(os.path.join(os.path.expanduser('~'),'Desktop','tropical_image_sig5.bmp'), img2)

os.path.expanduser('~') devolverá directamente su directorio de inicio.

Puntuaciones y reseñas

Nos puedes añadir valor a nuestra información añadiendo tu experiencia en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *