У меня есть немного кода Python OpenCV для захвата изображений и сохранения его на диск. Этот код работает нормально, когда я запускаю его из cmd или из PowerShell, он работает нормально. Но когда я запускаю его из PHP, он работает, но не работает должным образом.
Вот мой код Python:
import cv2, sys, json
import numpy as np
faceDetect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cam = cv2.VideoCapture(0)
Id = 1
i = 1
while (True):
ret, img = cam.read()
grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = faceDetect.detectMultiScale(grayImg, 1.3, 5)
for (x, y, w, h) in faces:
cv2.imwrite("dataset/user_" + str(Id) + "_" + str(i) + ".jpg", grayImg[y : y + h, x : x + w])
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
i += 1
cv2.waitKey(100)
cv2.imshow("Camera", img)
cv2.waitKey(1)
if (i > 20):
break
cam.release()
cv2.destroyAllWindows()
Вот мой PHP-код:
<?php
exec('C:\\Python27\\python.exe C:\\xampp\\htdocs\\atmp\\face_recognition\\dataset_creator.py');
?>
Есть ли какая-то конкретная причина не работать должным образом? Любой ответ будет оценен. Заранее спасибо 🙂
Вы должны сказать, что пошло не так. Бьюсь об заклад, это
faceDetect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
это не работает. Когда вы используете относительный путь, он попытается найти в текущем каталоге xml
файл.
Еще одна вещь, которая может пойти не так
cv2.imwrite("dataset/user_" + str(Id) + "_" + str(i) + ".jpg", grayImg[y : y + h, x : x + w])
Сбой, если у пользователя php / web нет прав на запись. Но я думаю, что это должно быть хорошо на Windows.
Других решений пока нет …