从php执行的python脚本将无法读取已保存的模型

时间:2018-06-08 10:44:01

标签: php laravel

以下是我要做的事情: 我发送一个带有图像作为数据的Ajax请求到php脚本,上传它并执行python脚本,图像名称python脚本加载性别检测模型并预测图像上人物的性别。

问题是模型没有加载,我在同一目录中使用php和python脚本尝试了它并且它工作正常但是我试图在laravel中使用它所以我不能再这样做了。 / p>

当我尝试手动运行python脚本时:

python path/to/script.py 

它会抛出此错误:OpenCV(3.4.1) Error: Unspecified error (File can't be opened for reading!)

但是当我这样做时,它起作用: -

cd path/to/script.py ; python script.py

这是我的php: -

    $file = $this->upload_Image($request->get('image'));
    $path =public_path().'/app/Http/Controllers';
    $command='cd '.$path.';';
    $path= 'python '.$path.'/facifier.py '.storage_path('app').$file;

    $command .= $path;
    return exec($command);

    Storage::disk('local')->delete($file);
    return json_encode($orderedData);

命令最终如下:cd absolute/path/to/script.py ; python script.py absolute/path/to/image.jpg 当我在命令提示符上使用它时它工作正常。 这是我在我的python脚本上得到错误的地方: -

fisher_face_gender = cv2.face.FisherFaceRecognizer_create()
fisher_face_gender.read('models/gender_classifier_model_kdef.xml')

有谁知道造成这种情况的原因,顺便说一句,我在Windows上。

1 个答案:

答案 0 :(得分:0)

感谢bruno desthuilliers的评论我得到了它的工作。问题在于我使用的模型的路径,它相对于python脚本,因为我认为脚本在它自己的路径上执行而不是在命令promt的路径上。

我刚刚将模型的路径更改为绝对路径,并且工作正常