2017-01-09 107 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()