web-dev-qa-db-fra.com

OpenCV - Enregistrement d'images dans un dossier particulier de votre choix

J'apprends OpenCV et Python. J'ai capturé des images de ma webcam et les ai enregistrées. Mais ils sont enregistrés par défaut dans le dossier local. Je veux les enregistrer dans un autre dossier à partir du chemin direct. Comment je le répare?

11
Hieu Tran Trung

La solution fournie par ebeneditos fonctionne parfaitement.

Mais si vous avez cv2.imwrite() dans plusieurs sections d'un fragment de code volumineux et que vous souhaitez modifier le chemin où les images sont enregistrées, vous devrez le modifier à chaque occurrence de cv2.imwrite(). individuellement.

Comme Soltius l'a dit, voici une meilleure solution. Déclarez un chemin et transmettez-le sous forme de chaîne à 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)

Maintenant, si vous voulez modifier le chemin, il vous suffit de changer la variable path.

Édité à partir d'une solution fournie par Kallz

25
Jeru Luke

Vous pouvez le faire avec la fonction OpenCV imwrite:

import cv2
cv2.imwrite('Path/Image.jpg', image_name)
7
ebeneditos

Merci tout le monde. Vos manières sont parfaites. Je voudrais partager une autre manière que j'ai utilisée pour résoudre le problème. J'ai utilisé la fonction os.chdir(path) pour changer le répertoire local en chemin. Après quoi j'ai sauvegardé l'image normalement.

6
Hieu Tran Trung

Réponse donnée par Jeru Luke ne fonctionne que sur les systèmes Windows. Si nous essayons sur un autre système d'exploitation (Ubuntu), il s'exécutera sans erreur, mais l'image sera enregistrée sur l'emplacement ou le chemin cible.

Ne fonctionne pas sous Ubuntu ni sous Windows

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

Je cours au-dessus du code mais l'image n'enregistre pas l'image sur le chemin cible. Ensuite, j’ai trouvé que la manière d’ajouter un chemin est fausse pour l’usage général que nous utilisons OS module pour ajouter le chemin.

Exemple:

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

travaillant sous Ubuntu et 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)

ce code fonctionne bien sous Windows et Ubuntu :)

5
Kallz