Estoy aprendiendo OpenCV y Python. Capturé algunas imágenes de mi cámara web y las guardé. Pero se guardan por defecto en la carpeta local. Quiero guardarlos en otra carpeta desde la ruta directa. ¿Cómo lo soluciono?

15
Hieu Tran Trung 11 ene. 2017 a las 11:55

5 respuestas

La mejor respuesta

La solución provista por ebeneditos funciona perfectamente.

Pero si tiene cv2.imwrite() en varias secciones de un fragmento de código grande y desea cambiar la ruta donde se guardan las imágenes, tendrá que cambiar la ruta en cada aparición de cv2.imwrite() individualmente.

Como dijo Soltius, aquí hay una mejor manera. Declara una ruta y pásala como una cadena en cv2.imwrite()

import cv2
import os
img = cv2.imread('1.jpg', 1)
path = 'D:/OpenCV/Scripts/Images'
cv2.imwrite(os.path.join(path , 'waka.jpg'), img)
cv2.waitKey(0)

Ahora, si desea modificar la ruta, solo tiene que cambiar la variable path.

Editado en base a la solución provista por Kallz

28
Jeru Luke 5 sep. 2017 a las 16:28

La respuesta dada por Jeru Luke solo funciona en sistemas Windows, si probamos en otro sistema operativo (Ubuntu), se ejecuta sin error, pero la imagen se guarda en la ubicación o ruta de destino.

No funciona en Ubuntu y no funciona en Windows

  import cv2
  img = cv2.imread('1.jpg', 1)
  path = '/tmp'
  cv2.imwrite(str(path) + 'waka.jpg',img)
  cv2.waitKey(0)

Ejecuto el código anterior pero la imagen no guarda la imagen en la ruta de destino. Luego descubrí que la forma de agregar la ruta es incorrecta para el propósito general que usamos en el módulo OS para agregar la ruta.

Ejemplo:

 import os
 final_path = os.path.join(path_1,path_2,path_3......)

Trabajando en Ubuntu y Windows

 import cv2
 import os
 img = cv2.imread('1.jpg', 1)
 path = 'D:/OpenCV/Scripts/Images'
 cv2.imwrite(os.path.join(path , 'waka.jpg'),img)
 cv2.waitKey(0)

Ese código funciona bien tanto en Windows como en Ubuntu :)

5
Cris Luengo 17 oct. 2018 a las 18:55

Gracias a todos. Tus caminos son perfectos. Me gustaría compartir otra forma en que solía solucionar el problema. Usé la función os.chdir(path) para cambiar el directorio local a la ruta. Después de lo cual guardé la imagen normalmente.

6
Jeru Luke 13 ene. 2017 a las 04:03

PARA USUARIOS DE MAC si está trabajando con cv abierto

import cv2

cv2.imwrite('path_to_folder/image.jpg',image)
0
SUJITKUMAR SINGH 6 dic. 2019 a las 04:09

Puede hacerlo con la función de OpenCV imwrite:

import cv2
cv2.imwrite('Path/Image.jpg', image_name)
8
ebeneditos 11 ene. 2017 a las 09:01