IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème d'exécution d'un scipt python lancé en php


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    bidouilleur amateur
    Inscrit en
    Septembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : bidouilleur amateur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut Problème d'exécution d'un scipt python lancé en php
    Bonjour,

    Cedric,41 ans, je debute en php, et en python ausi ...
    En général j'arrive a trouver des solutions en recherchant sur le web, mais la je ne comprend pas ce qui se passe.

    Je suis sous Current PHP version: 5.6.30-0+deb8u1, raspberry pi 3

    J'ai un script python, qui fonctionne très bien quand je le lance en console avec un python train.py
    le script python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    #! /usr/bin/env python
    import fnmatch
    import os
    import MySQLdb as mdb
    import cv2
    import numpy as np
     
    import config
    import face
     
     
    MEAN_FILE = 'mean.png'
    POSITIVE_EIGENFACE_FILE = 'positive_eigenface.png'
    NEGATIVE_EIGENFACE_FILE = 'negative_eigenface.png'
     
     
    def walk_files(directory, match='*'):
    	"""Generator function to iterate through all files in a directory recursively
    	which match the given filename match parameter.
    	"""
    	for root, dirs, files in os.walk(directory):
    		for filename in fnmatch.filter(files, match):
    			yield os.path.join(root, filename)
     
    def prepare_image(filename):
    	"""Read an image as grayscale and resize it to the appropriate size for
    	training the face recognition model.
    	"""
    	return face.resize(cv2.imread(filename, cv2.IMREAD_GRAYSCALE))
     
    def normalize(X, low, high, dtype=None):
    	"""Normalizes a given array in X to a value between low and high.
    	Adapted from python OpenCV face recognition example at:
    	  https://github.com/Itseez/opencv/blob/2.4/samples/python2/facerec_demo.py
    	"""
    	X = np.asarray(X)
    	minX, maxX = np.min(X), np.max(X)
    	# normalize to [0...1].
    	X = X - float(minX)
    	X = X / float((maxX - minX))
    	# scale to [low...high].
    	X = X * (high-low)
    	X = X + low
    	if dtype is None:
    		return np.asarray(X)
    	return np.asarray(X, dtype=dtype)
     
    if __name__ == '__main__':
    	#print "Reading training images..."
    	conn = mdb.connect('localhost','xxxx','xxxxxx','data')
    	cur = conn.cursor()
    	query = ((" UPDATE rpi3portail SET resultattrain = 'Reading training images...' WHERE id= 2  "))
    	cur.execute(query)
    	conn.commit()
    	cur.close()
    	conn.close()
    	faces = []
    	labels = []
    	pos_count = 0
    	neg_count = 0
    	# Read all positive images
    	for filename in walk_files(config.POSITIVE_DIR, '*.pgm'):
    		faces.append(prepare_image(filename))
    		labels.append(config.POSITIVE_LABEL)
    		pos_count += 1
    	# Read all negative images
    	for filename in walk_files(config.NEGATIVE_DIR, '*.pgm'):
    		faces.append(prepare_image(filename))
    		labels.append(config.NEGATIVE_LABEL)
    		neg_count += 1
    	#print 'Read', pos_count, 'positive images and', neg_count, 'negative images.'
    	# Train model
    	#print 'Training model...'
    	conn = mdb.connect('localhost','xxxxx','xxxxxx','data')
    	cur = conn.cursor()
    	query = (" UPDATE rpi3portail SET resultattrain = 'Training model...' WHERE id= 2  ")
    	cur.execute(query)
    	conn.commit()
    	cur.close()
    	conn.close()
    	model = cv2.createEigenFaceRecognizer()
    	model.train(np.asarray(faces), np.asarray(labels))
    	# Save model results
    	model.save(config.TRAINING_FILE)
    	#print 'Training data saved to', config.TRAINING_FILE
    	conn = mdb.connect('localhost','root','uargea2h','data')
    	cur = conn.cursor()
    	query = ((" UPDATE rpi3portail SET resultattrain = 'Termine' WHERE id= 2  "))
    	cur.execute(query)
    	conn.commit()
    	cur.close()
    	conn.close()
    	# Save mean and eignface images which summarize the face recognition model.
    	mean = model.getMat("mean").reshape(faces[0].shape)
    	cv2.imwrite(MEAN_FILE, normalize(mean, 0, 255, dtype=np.uint8))
    	eigenvectors = model.getMat("eigenvectors")
    	pos_eigenvector = eigenvectors[:,0].reshape(faces[0].shape)
    	cv2.imwrite(POSITIVE_EIGENFACE_FILE, normalize(pos_eigenvector, 0, 255, dtype=np.uint8))
    	neg_eigenvector = eigenvectors[:,1].reshape(faces[0].shape)
    	cv2.imwrite(NEGATIVE_EIGENFACE_FILE, normalize(neg_eigenvector, 0, 255, dtype=np.uint8))
    A différent endroit, je fais des UPDATE dans ma base sql,pour suivre l’évolution.
    Ce script fonctionne parfaitement en console, et ce jusqu'a la fin.

    Quand je lance ce script via php avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $output=exec('python /home/pi/face/train.py ');
    le script demarre, puis bloque quelque part après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #print 'Training model...'
    	conn = mdb.connect('localhost','xxxxx','xxxxxx','data')
    	cur = conn.cursor()
    	query = (" UPDATE rpi3portail SET resultattrain = 'Training model...' WHERE id= 2  ")
    	cur.execute(query)
    	conn.commit()
    	cur.close()
    	conn.close()
    Je le vois dans ma base sql, "resultattrain" prend la valeur "Training model..." puis reste bloqué la dessus..

    Avez vous une piste? une méthode pour voir ce qui bloque ?

  2. #2
    Futur Membre du Club
    Homme Profil pro
    bidouilleur amateur
    Inscrit en
    Septembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : bidouilleur amateur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Bon, j'ai un peu avancé,
    c'est ici que ca bloque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	model.train(np.asarray(faces), np.asarray(labels))
    Comme c'est un script python que j'ai honteusement pompé sur la toile, je ne sais pas a quoi sert cette ligne.

    Je vais chercher...

    Peut etre (et encore) un problème de permissions sur cv2 / opencv

Discussions similaires

  1. problème d'exécution python
    Par marie bioch dans le forum Général Python
    Réponses: 7
    Dernier message: 12/01/2016, 23h04
  2. Problème d'exécution de script Python dans une JSP
    Par bleno dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/07/2013, 09h41
  3. Problème d'exécution d'un script Python
    Par magik-boubou666 dans le forum C++
    Réponses: 2
    Dernier message: 03/03/2013, 10h15
  4. [Tomcat][EasyStruts] Problème d'exécution
    Par mmed dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 29/12/2004, 11h55
  5. Problème à l'exécution avec wxWindows (compilé avec BCC55)
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 14/11/2003, 18h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo