2017-09-30 4 views
0

Je suis en train de construire le code en utilisant python, pour lequel j'ai besoin de traiter au moins 50 images. Alors, comment dois-je lire les images une par une et le traiter. Est-il possible d'utiliser une boucle et ai-je besoin de créer une base de données séparée pour cela ou tout simplement enregistrer toutes les images dans un fichier séparé fera l'affaire?le traitement de plusieurs images en séquence dans opencv python

Répondre

0

J'ai écrit un code peut statisfy vos besoins.

import glob 
import os,sys 
import cv2 


## Get all the png image in the PATH_TO_IMAGES 
imgnames = sorted(glob.glob("/PATH_TO_IMAGES/*.png")) 

for imgname in imgnames: 
    ## Your core processing code 
    res = propress(imgname) 

    ## rename and write back to the disk 
    #name, ext = os.path.splitext(imgname) 
    #imgname2 = name+"_res"+ext 
    imgname2 = "_res".join(os.path.splitext(imgname)) 
    cv2.imwrite(imgname2, res) 
+0

Merci @Silencer, mais avoir du mal à réécrire les fichiers sur le disque. Il affiche l'erreur suivante: 'Fichier "C: \ Python36 \ Doc \ test \ A1.py", ligne 28, dans nom, ext = os.path.splitext (images) Fichier "C: \ Python36 \ lib \ ntpath.py ", ligne 223, dans splitext p = os.fspath (p) TypeError: objet attendu str, bytes ou os.PathLike, pas la liste ' –

+0

Je n'arrive pas à comprendre ce qui ne va pas sans votre code. – Silencer

+0

hey! cela a fonctionné, la nouvelle ligne que vous avez ajoutée au code. merci @Silencer –

0

La tâche consiste à étapes suivantes,

  1. Avoir les images dans un répertoire par exemple foo/
  2. Obtenir la liste de toutes les images dans le foo/
  3. Lopp sur la liste des images

    3.1. img = cv2.imread(images(i),0)

    3.2. ProcessImage(img) # Exécuter une fonction arbitraire sur l'image

    3.3. filename = 'test' + str (i) + '. png'

    3.4. cv2.imwrite(filename, img)

  4. Fin de la boucle