Raspberry PI - python скрипт не выполняется при вызове с использованием exe c () в php - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю над проектом для школы и столкнулся с проблемой ... Я хочу выполнить мой файл python, который случайным образом выбирает изображение и определяет, где находятся точки, и дает вам очки за него. Сценарий работает нормально и все делает правильно, но когда я пытаюсь вызвать тот же сценарий с PHP, используя функцию exe c (), сценарий не выполняется / не работает должным образом.

Вот мой файл zaznava.py:

import cv2 as cv
import numpy as np
import math
import random
import json

file = open("/home/pi/Desktop/Matura/output.txt", "w")

def zaznaj():

    nbr = random.randint(1,7)

    string = "/home/pi/Desktop/Matura/slike/slika" + str(nbr) + ".jpg"

    img = cv.imread(string)
    # cv.imshow("img",img)  
    # cv.waitKey(0)
    hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)

    lower = np.array([0,140,140], dtype = "uint8")
    upper = np.array([255,255,255], dtype = "uint8")

    mask = cv.inRange(hsv,lower,upper)

    ret, thresh = cv.threshold(mask,127,255,cv.THRESH_BINARY_INV)
    contours, hierarchy = cv.findContours(thresh,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE)

    posX = []
    posY = []

    for c in contours:
        M = cv.moments(c)
        cX = int(M["m10"] / M["m00"])
        cY = int(M["m01"] / M["m00"])

        print(cX,cY)
        posX.append(cX)
        posY.append(cY)

    mat_cx = np.asarray(posX)
    mat_cy = np.asarray(posY)
    vals = np.column_stack((mat_cx, mat_cy))

    div = 319 / 9
    dist = []

    for i in range(len(vals)):
        tmp = math.pow(vals[i][0] - 319, 2)
        tmp2 = math.pow(vals[i][1] - 319, 2)
        dist.append(int(math.sqrt(tmp + tmp2)))

    dist.pop(0)
    print(dist)
    score = []
    for i in range(len(dist)):
        score.append(9-(dist[i]/div))

    for i in range(len(score)):
        if score[i] < 0:
            score[i] = 0

    print(score)

    score2 = json.dumps(score)

    # cv.imshow("newImg", thresh)
    # cv.waitKey(0)

    # cv.destroyAllWindows()

    file.write(score2)

#for i in range(5):
zaznaj()

file.close()

, а это мой PHP файл:

<?php

header("Access-Control-Allow-Methods: *");
header("Access-Control-Allow-Origin: *");

exec(" python /home/pi/Desktop/Matura/zaznava.py");

$myfile = fopen("/home/pi/Desktop/Matura/output.txt", "r") or die;

while(!feof($myfile)){
    echo fgets($myfile);
}

?>
...