Ich habe OpenCV verwendet, um Bilder mit TensorFlow in das npy-Format zu konvertieren, aber ich habe einen Fehler festgestellt und mir eine Notiz gemacht.
Dummerweise habe ich vergessen, dass Datei-E / A-bezogene Funktionen vollständig hängen bleiben würden, wenn ich keine Ausnahmen behandeln würde, wenn sie fehlschlagen. Die Imread-Funktion ist eine davon.
Unten finden Sie eine Funktion, die einen Datensatz für den Tensorflow erstellt. Die Verarbeitung nach dem Lesen der Imread-Funktion erfolgt mit dem Urteil None. Wenn Sie dies nicht tun, erhalten Sie Moos in None, also müssen Sie dies tun. (Wenn Sie darüber nachdenken, ist es natürlich ...)
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()
#Der Code zum Lernen ist mühsam und wird daher weggelassen.
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)
#Kein Urteil in diesem Teil
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()
Ich liebe den schmutzigen Code (?)
http://stackoverflow.com/questions/23628325/cv2-imread-checking-if-image-is-being-read
Recommended Posts