php调用python文件并传递参数

php调用python文件并传递参数

Ezra
2022-06-15 / 0 评论 / 53 阅读 / 正在检测是否收录...

上篇说过视频流需要用到python的方式截图,但是触发方式还是要由php来触发,所以就像标题所说的php需要调用python文件来达到自己的目的

$cmd = shell_exec("D:\Python\Python310\python.exe public/project1/rtsp.py");
echo $cmd;

此处shell_exec里就是你要填写的命令行,如果不能用记得检查是否禁用掉了该函数,在php.ini里搜索找到disable_functions = 看看shell_exec是否在其中如果有删掉。
我这里所写的命令是按照绝对路径写的,因为直接python public/project1/rtsp.py并没有反应记得根据自己的实际情况来写
然后我在调用python的文件时需要传递视频流地址和图片保存路径,直接在命令行后空格参数

$basedir = dirname(__FILE__,4);     
        $road = $basedir."/../public/upload/haikang/";
        $rtsp="rtsp://admin:123qwe123@192.168.110.64:554";
        $cmd = shell_exec("D:\Python\Python310\python.exe project1/rtsp.py $rtsp $road");
        echo $cmd;
import uuid
import cv2
import sys


# RTSP="rtsp://admin:123qwe123@192.168.110.64:554"
CAMID="kk"
# 存视频图像
RTSP = sys.argv[1] #获取传过来的第一个参数
ROAD = sys.argv[2] #获取传过来的第一个参数
VideoCap = cv2.VideoCapture(RTSP)
ret, frame = VideoCap.read()
if ret:
   # FrameName = "_" + str(CAMID) + "_" + str(uuid.uuid1())
   FrameName = str(uuid.uuid1())
   # cv2.imwrite('D:/Pecker/imgs/%s.jpg' % FrameName, frame)
   cv2.imwrite(ROAD+'%s.png' % FrameName, frame)
   # print("成功截图", FrameName)
   print(FrameName+'.png')
VideoCap.release()

其中使用sys来获取传递的参数

1

评论 (0)

取消