从PHP控制器运行Python脚本

时间:2017-01-09 10:55:07

标签: php python mysql symfony

我有一个可以预处理图像的python脚本(增加对比度)。

通过命令行工作正常。

我想从PHP Web应用程序调用该脚本。我想使用存储在MySQL数据库中的图像。

这是python脚本。

#!/usr/bin/env python

import cv2
import numpy as np
import cv2
import numpy as np
import matplotlib
import matplotlib.pyplot as plt 
plt.switch_backend('Qt4Agg') 

img = cv2.imread('original.png')

bilateral = cv2.bilateralFilter(img,9,75,75)

img = cv2.imread('bilaterla_filtered.png')

# generating the kernels

kernel_sharpen_3 = np.array([[-1,-1,-1,-1,-1],
                             [-1,2,2,2,-1],
                             [-1,2,8,2,-1],
                             [-1,2,2,2,-1],
                             [-1,-1,-1,-1,-1]]) / 8.0

output_3 = cv2.filter2D(img, -1, kernel_sharpen_3)

cv2.imwrite('edge_enhancement.png',output_3)

img = cv2.imread('edge_enhancement.png')

gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

hist,bins = np.histogram(gray_image.flatten(),256,[0,256])
cdf = hist.cumsum()

cdf_m = np.ma.masked_equal(cdf,0)
cdf_m = (cdf_m - cdf_m.min())*255/(cdf_m.max()-cdf_m.min())
cdf = np.ma.filled(cdf_m,0).astype('uint8')

img2 = cdf[img]
image_enhanced=img2
cv2.imwrite('Final.png',image_enhanced)

我应该在控制器中做什么

  1. 如何将图像从mysql数据库作为参数发送到 脚本?
  2. 如何执行脚本并将生成的图像存储在 数据库?

1 个答案:

答案 0 :(得分:1)

嗯,对于初学者你应该重做你的python脚本以使其参数化。
像这样:

img = cv2.imread('original.png')
你的脚本中不应该存在

!您应该接收文件路径作为脚本的参数。

其余的很大程度上取决于你如何实现它以及你希望它如何工作。

如果您想从PHP脚本中执行程序,请查看shell_exec()exec()