2017-04-21 131 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