[PYTHON] [OpenCV] Lorsque vous voulez vérifier s'il est lu correctement avec imread

J'ai utilisé OpenCV lors de la conversion d'images au format npy avec TensorFlow, mais je me suis retrouvé coincé avec une erreur, alors j'ai pris une note.

Bêtement, j'ai oublié que les fonctions liées aux E / S de fichier seraient complètement bloquées si je ne gérais pas les exceptions lorsqu'elles échouaient. La fonction imread est l'une d'entre elles.

Voici une fonction qui crée un ensemble de données pour tensorflow. Le traitement après lecture de la fonction imread est effectué avec le jugement None. Si vous ne le faites pas, vous obtiendrez de la mousse dans None, vous devez donc le faire. (Si vous y réfléchissez, c'est naturel ...)

import os, sys
import numpy as np
import tensorflow as tf
import cv2

# config
flags = tf.app.flags
FLAGS = flags.FLAGS
flags.DEFINE_string('imgdir', '/home/hoge/fuga/piyo', 'Image dataset path')
flags.DEFINE_string('imgclasses', 4, 'The num of image dataset classes')
IMAGE_SIZE = 84 # the size of image
TRAIN_IMG_DIRS = os.listdir(FLAGS.imgdir)

def main():
  train_image, train_label = cvGetImageAndLabel()
  #Le code d'apprentissage est gênant, il est donc omis.

def cvGetImageAndLabel():
  images = []
  labels = []
  for i, d in enumerate(TRAIN_IMG_DIRS):
    files = os.listdir(FLAGS.imgdir + '/' + d)
    for f in files:
      img = cv2.imread(FLAGS.imgdir + '/' + d + '/' + f)
      #Aucun jugement dans cette partie
      if not img is None:
        img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE), interpolation = cv2.INTER_AREA)
        img = img.flatten().astype(np.float32)/255.0
        images.append(img)
        tmp = np.zeros(FLAGS.imgclasses)
        tmp[i] = 1
        labels.append(tmp)

  return np.asarray(images, dtype=np.float32), np.asarray(labels, dtype=np.float32)

if __name__ == '__main__':
  main()

J'adore le code sale (?)

Lien de référence

http://stackoverflow.com/questions/23628325/cv2-imread-checking-if-image-is-being-read

Recommended Posts

[OpenCV] Lorsque vous voulez vérifier s'il est lu correctement avec imread
Lorsque vous souhaitez l'utiliser tel quel lorsque vous l'utilisez avec lambda memo
N'écrivez pas Python si vous voulez l'accélérer avec Python
Quand il est difficile de copier ce que vous avez construit avec vue
[TensorFlow] Si vous souhaitez exécuter TensorBoard, installez-le avec pip.
AssertNumQueries est utile si vous souhaitez tester facilement une requête N + 1 avec django
nb_conda_kernels est recommandé si vous souhaitez entrer dans l'environnement virtuel avec jupyter
Paramètres lorsque vous souhaitez exécuter python-mecab avec travis
Lorsque vous souhaitez filtrer avec le framework Django REST
Si vous ne savez pas comment dessiner le graphique que vous voulez avec matplotlib, il est pratique de regarder la galerie
Lorsque la variable que vous souhaitez utiliser comme exposant dans matplotlib comporte deux caractères ou plus
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Utilisez aggdraw lorsque vous voulez dessiner magnifiquement avec un oreiller
Lorsque vous souhaitez enregistrer les données initiales de Django avec des relations
Un site pour voir quand vous voulez lire un article de machine learning mais cela semble difficile
Lorsque vous souhaitez envoyer un objet avec des requêtes à l'aide de flask
Je veux vérifier la position de mon visage avec OpenCV!
Lorsque vous souhaitez ajuster l'intervalle de l'échelle de l'axe avec APLpy
Je veux détecter des objets avec OpenCV
Un référentiel essentiel à utiliser lorsque vous souhaitez l'essayer avec ansible
Si vous souhaitez inclure awsebcli dans CircleCI, spécifiez la version de python
18 beaux termes Python que vous voulez lire à haute voix. R18 avec des exemples de phrases
Si vous souhaitez obtenir plusieurs statistiques avec groupby of pandas v1
Signifie mémo lorsque vous essayez de faire de l'apprentissage automatique avec 50 images
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
Il est pratique d'utiliser stac_info et exc_info lorsque vous souhaitez afficher la traceback dans la sortie du journal par journalisation.
Solution de contournement si vous obtenez une erreur lors de la tentative d'installation de PySide avec pip
Il est plus pratique d'utiliser csv-table lors de l'écriture d'une table avec python-sphinx
Modèle de bonnes pratiques personnelles à utiliser lorsque vous souhaitez créer MVP avec Flask
Je veux écrire un élément dans un fichier avec numpy et le vérifier.
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
Que faire si l'abandon s'affiche lors de la saisie d'une vidéo de caméra dans OpenCV
Si vous voulez créer un bot discord avec python, utilisons un framework
Si vous essayez d'installer Python2 pip après avoir installé Python3 pip et qu'il est rejeté
Matériel à lire lors de la mise en route de Python
Que faire si vous obtenez une erreur OpenSSL lors de l'installation de Python 2 avec pyenv
Que faire si vous obtenez une erreur d'importation lors de l'importation de matplotlib avec Jupyter
[Introduction à Python] Quel est l'important "if __name__ == '__ main__':" lorsqu'il s'agit de modules?
Que faire si vous ne souhaitez pas utiliser de noms de colonnes japonais lors de l'utilisation d'ortoolpy.logistics_network
Si vous souhaitez utiliser Cython, incluez également python-dev
Vérifiez s'il s'agit d'Unix dans le langage de script
Liens pour faire ce que vous voulez avec Sublime Text
Matériel à lire lors de la mise en route d'Apache Beam
Choses à faire lorsque vous commencez à développer avec Django
Lorsque vous voulez plt.save dans l'instruction for
Vérifiez s'il s'agit d'Unix dans le langage de script
Lorsqu'il est difficile de configurer un serveur SMTP localement lors de l'envoi de courrier avec Python.
Je connais? Analyse de données à l'aide de Python ou de choses que vous souhaitez utiliser quand vous le souhaitez avec numpy
Opération utile lorsque vous souhaitez résoudre tous les problèmes dans plusieurs langages de programmation avec Codewars
Si vous voulez mettre un argument dans la fonction de fermeture et l'exécuter plus tard
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
Si vous essayez de créer un nuage de mots avec des commentaires de mangas WEB, il est intéressant de comprendre visuellement de quel genre de manga il s'agit.
Une doublure à frapper si vous oubliez où est aujourd'hui
[Django] Mémorandum lorsque vous souhaitez communiquer de manière asynchrone [Python3]
Je veux initialiser si la valeur est vide (python)
Après tout, il est faux de chat avec le sous-processus python.
[Python] Si vous souhaitez soudainement créer un formulaire de demande