public Emocion getEmocion() {
    Map<Emocion, Integer> emociones = new HashMap<>();
    // Las fotos son una lista obtenida de mongo, son las ultimas fotografias del usuario sin
    // procesar
    BitacoraFotografia bitacoraFotografia = new BitacoraFotografia();
    List<DBObject> fotos = new BitacoraFotografia().obtenerFotografiasSinProcesar(idUsuario);

    for (int index = 0; index < fotos.size(); index++) {
      try {
        Emocion emocion = Emocion.NEUTRAL;
        boolean emocionEncontrada = true;
        DBObject foto = fotos.get(index);

        String datos = foto.get("fotografia").toString();
        BufferedImage image = ImageHelper.decodeToImage(datos);

        // javax.imageio.ImageIO.write(image, "jpg", java.io.File.createTempFile("img", ".jpg", new
        // java.io.File("D:/imagenes")));

        if (image != null) {
          System.out.println("Se decodifico de base64 a imagebuffer");
          switch (detector) {
            case "indico":
              System.out.println("Se llama a detector indico");
              emocion = new ExtractEmotionIndico().processData(image);
              System.out.println("Rostro procesado, indico: " + emocion);
              break;
            case "oxford":
              System.out.println("Se llama a detector de oxford");
              emocion = new ExtractEmotionMicrosoft().processData(image);
              System.out.println("Rostro procesado, oxford");
              break;
            case "neuroph":
              RecognitionResult result = new RecognitionFace().processFace(image);
              if (result.isHayEmocion()) { // Si hay una emocion se ejecuta la red neuronal, en caso
                // contrario se desecha
                System.out.println("Se encontro un rostro, opencv");
                emocion = new ExtractEmotionNeuroph().processData(result.getCoordenadas());
                System.out.println("Emocion procesada: NeuroPH");
              } else {
                emocionEncontrada = false;
              }
              break;
            case "lbppython":
            default:
              System.out.println("Se llama a detector lbp python");
              emocion = new ExtractEmotionPythonLBP().processData(image);
              System.out.println("Rostro procesado, lbppython: " + emocion);
              break;
          }
        }

        if (emocionEncontrada)
          bitacoraFotografia.categorizarFotografia(
              new ObjectId(foto.get("_id").toString()), emocion.toString(), detector);

        if (emociones.containsKey(emocion)) {
          emociones.put(emocion, emociones.get(emocion) + 1);
        } else {
          emociones.put(emocion, 1);
        }

      } catch (Exception ex) {
        Logger.getLogger(RecognitionEmotionalFace.class.getName()).log(Level.SEVERE, null, ex);
      }
    }

    return findEmotion(emociones);
  }
  public String getEmocionSinProcesar(String fotografia) {
    BufferedImage image = ImageHelper.decodeToImage(fotografia);

    return new ExtractEmotionPythonLBP().processDataString(image);
  }