2017-01-09 135 views
0

我有一个可以预处理图像的python脚本(增加对比度)。从PHP控制器运行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

那么,对于初学者您应该重做您的python脚本,使其参数化。
事情是这样的:

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

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

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

如果你想执行php脚本中的程序,请看看shell_exec()exec()