«Il est enfin temps de vous amuser.
eval.py
#!/usr/local/bin/python
#! -*- coding: utf-8 -*-
import sys
import numpy as np
import cv2
import tensorflow as tf
import os
import random
import main
#Chemin du classificateur de visage par défaut OpenCV
cascade_path = '/usr/local/Cellar/opencv3/3.2.0/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)
#Étiquette d'identification et le nom correspondant à chaque numéro d'étiquette
HUMAN_NAMES = {
  0: u"Kyo",
  1: u"Kaoru",
  2: u"Shinya"
}
#Image spécifiée(img_path)Résultats d'apprentissage(ckpt_path)Jugement utilisant
def evaluation(img_path, ckpt_path):
  #Réinitialisation du graphique(Apparemment, je ne suis pas sûr de ce que je fais ...)
  tf.reset_default_graph()
  #Fichier ouvert
  f = open(img_path, 'r')
  img = cv2.imread(img_path, cv2.IMREAD_COLOR)
  #Convertir en image monochrome
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  face = faceCascade.detectMultiScale(gray, 1.1, 3)
  if len(face) > 0:
    for rect in face:
      #Je voulais donner un nom approprié à l'image traitée car cela n'a pas d'importance. Peut-être la date et le nombre de secondes
      random_str = str(random.random())
      #Écrivons la partie du visage avec une ligne rouge
      cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0, 255), thickness=2)
      #Où enregistrer l'image avec le visage entouré d'une ligne rouge
      face_detect_img_path = '{Chemin du répertoire}' + random_str + '.jpg'
      #Enregistrement de l'image avec le visage entouré d'une ligne rouge
      cv2.imwrite(face_detect_img_path, img)
      x = rect[0]
      y = rect[1]
      w = rect[2]
      h = rect[3]
      #Enregistrer l'image du visage détecté découpé
      cv2.imwrite('{Chemin du répertoire}' + random_str + '.jpg', img[y:y+h, x:x+w])
      #Découpez l'image du visage à transmettre à TensorFlow
      target_image_path = '{Chemin du répertoire}' + random_str + '.jpg'
  else:
    #Si aucun visage n'est trouvé, le processus se termine
    print 'image:No Face'
    return
  f.close()
  f = open(target_image_path, 'r')
  #Tableau pour mettre des données
  image = []
  img = cv2.imread(target_image_path)
  img = cv2.resize(img, (28, 28))
  #Après avoir organisé les informations d'image dans une rangée, 0-Défini sur une valeur flottante de 1
  image.append(img.flatten().astype(np.float32)/255.0)
  #Convertir au format numpy afin qu'il puisse être traité par TensorFlow
  image = np.asarray(image)
  #Sort et renvoie la probabilité de chaque étiquette pour l'image d'entrée(main.Appel de py)
  logits = main.inference(image, 1.0)
  # We can just use 'c.eval()' without passing 'sess'
  sess = tf.InteractiveSession()
  # restore(Lecture des paramètres)Préparation de
  saver = tf.train.Saver()
  #Initialisation variable
  sess.run(tf.global_variables_initializer())
  if ckpt_path:
    #Lecture des paramètres après l'apprentissage
    saver.restore(sess, ckpt_path)
  # sess.run(logits)Pareil que
  softmax = logits.eval()
  #résultat du jugement
  result = softmax[0]
  #Résultat du jugement%Et arrondir
  rates = [round(n * 100.0, 1) for n in result]
  humans = []
  #Créer un hachage pour le numéro d'étiquette, le nom, le pourcentage
  for index, rate in enumerate(rates):
    name = HUMAN_NAMES[index]
    humans.append({
      'label': index,
      'name': name,
      'rate': rate
    })
  #Trier par pourcentage le plus élevé
  rank = sorted(humans, key=lambda x: x['rate'], reverse=True)
  
  #Sortir le résultat sur la console
  print rank
  #Renvoie le résultat du jugement et le chemin de l'image traitée
  return [rank, os.path.basename(img_path), random_str + '.jpg']
#Pour tester à partir de la ligne de commande
if __name__ == '__main__':
  evaluation('{Chemin du répertoire}/test.jpg', '{Chemin du répertoire}/model2.ckpt')
python eval.py