2017-04-21 126 views
0

我有一些OpenCV python代碼來捕獲圖像並將其保存到磁盤。此代碼工作正常,當我從cmd運行它或從PowerShell它工作正常。但是,當我從PHP運行它運行,但無法正常工作。 這裏是我的Python代碼:從PHP運行Python openCV代碼無法正常工作

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'); 
?> 

有什麼特殊原因,不能正常工作?任何答案將不勝感激。在此先感謝:)

回答

1

你應該說出了什麼問題。但我敢打賭,它是

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上應該可以。

+0

你的意思是我必須寫完整路徑的xml文件? – Murad

+0

是的。我會嘗試。 –

+0

窗口會出現imwrite函數的問題嗎? – Murad