daniel_silva Posted July 14, 2022 at 09:49 AM Report Share #626449 Posted July 14, 2022 at 09:49 AM (edited) Olá, Eu gostaria de saber como é que consigo chamar o meu executável de python em php para disparar o output em web. Ou seja, eu tenho um ficheiro .py que com o pyinstaller tornei-o em ficheiro executável e chamando esse ficheiro na linha de comandos ele dispara o output correto. O que eu queria fazer era um ficheiro em PHP que executasse no localhost. Mas não aparece a string desejada... Na linha de comandos insiro: 1. cd C:\Users\35196\Documents\Python\pyinstaller\dist\Load_Final_Model\ 2. Load_Final_Model.exe image2.jpg - A image2.jpg é o ficheiro que ele recebe com a instrução sys.argv[1] E fornece o output, como por exemplo: "Classicada por: cat" O que acontece é que, quando executo o php fica tudo branco e não aparece nada. Código PHP: <?php $file = 'image2.jpg'; $command = escapeshellcmd('C:\Users\35196\Documents\Python\pyinstaller\dist\Load_Final_Model\Load_Final_Model.exe '.$file); $output = shell_exec($command); echo $output; ?> Código Python: #!/usr/bin/env python # coding: utf-8 # # CLASSES: # # [0] Airplane # [1] Automobile # [2] Bird # [3] Cat # [4] Deer # [5] Dog # [6] Frog # [7] Horse # [8] Ship # [9] Truck class_nameEN_us = ["airplane", "automobile" , "bird" , "cat" , "deer" , "dog" , "frog" , "horse" , "ship" , "truck"] # evaluate the deep model on the test dataset from tensorflow.keras.datasets import cifar10 from tensorflow.keras.models import load_model from tensorflow.keras.utils import to_categorical # load train and test dataset def load_dataset(): # load dataset (trainX, trainY), (testX, testY) = cifar10.load_data() # one hot encode target values trainY = to_categorical(trainY) testY = to_categorical(testY) return trainX, trainY, testX, testY # call load dataset function trainX, trainY, testX, testY = load_dataset() # scale pixels def prep_pixels(train, test): # convert from integers to floats train_norm = train.astype('float32') test_norm = test.astype('float32') # normalize to range 0-1 train_norm = train_norm / 255.0 test_norm = test_norm / 255.0 # return normalized images return train_norm, test_norm trainX, testX = prep_pixels(trainX, testX) # load model model = load_model('final_model.h5') # evaluate model _, acc = model.evaluate(testX, testY, verbose = 0) print('Hello', sys.argv[1]) print('> %.3f' % (acc * 100.0)) from tensorflow.keras.preprocessing.image import load_img from tensorflow.keras.preprocessing.image import img_to_array import numpy as np # load and prepare the image def load_image(filename): # load the image img = load_img(filename, target_size=(32, 32)) # convert to array img = img_to_array(img) # reshape into a single sample with 3 channels img = img.reshape(1, 32, 32, 3) # prepare pixel data img = img.astype('float32') img = img / 255.0 return img # load model model = load_model('final_model.h5') # load the image caminho_img = 'images/' + sys.argv[1] img = load_image(caminho_img) y_predict = np.argmax(model.predict(img), axis=-1) print("Classicada por: " + class_nameEN_us[y_predict[0]]) Obrigado. Edited July 14, 2022 at 10:24 AM by daniel_silva Link to comment Share on other sites More sharing options...
M6 Posted July 14, 2022 at 10:57 AM Report Share #626450 Posted July 14, 2022 at 10:57 AM Creio que o que te falta deve ser indicar o caminho completo para a imagem. Quando estás a executar o "Load_Final_Model.exe" estás a passar "image2.jpg" como argumento, mas estás a dizer onde está a imagem, pelo que presumo que estará a procurar a imagem em "C:\Users\35196" ou no local onde o PHP está a ser executado ou no local onde tens alojado o script de PHP. Uma pequena nota: se queres uma interface web para a tua aplicação, porque não usas Django? 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now