在Amazon-Ec2实例上运行OpenCv Python脚本时出现问题

时间:2016-04-07 11:45:48

标签: php python opencv amazon-ec2

我使用php System()函数调用Python脚本。

Python脚本使用OpenCv库实现Foreground减法。我使用Post请求上传图像,然后将文件传递给脚本。

以下内容正在代码中执行

1. Uploading file through Post request.
2. Passing the file to Python Script
3. Script reads the file, implements the 
   Foreground subtraction algorithm    
   and saves this to a new file.

我正在使用两个图像测试此程序,1500 * 701像素和2368 * 4208像素。

对于低分辨率图像,一切都正常。但对于高分辨率图像,Python脚本一直在退出。

Php代码。

system("python /var/www/html/wowflux/public/scripts/test.py",$ret_val);
var_dump($ret_val);

Python脚本

import numpy as np
import cv2
import math
import os 
import sys
from sys import path
from matplotlib import pyplot as plt

##test_image = cv2.imread(sys.argv[1])
test_image = cv2.imread("/var/www/html/wowflux/public/test.jpg")
e1 = cv2.getTickCount()
height, width, channels = test_image.shape

h = int(height*0.8)
w = int(width*0.8)
x = int((width-w)/2)
y = int((height-h)/2)
mask = np.zeros((height,width),dtype='uint8')
rect = (x,y,w,h)
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
##tmp1 = np.zeros((1, 13 * 5))
##tmp2 = np.zeros((1, 13 * 5))
cv2.grabCut(test_image,mask,rect,bgdModel,fgdModel,2,mode=cv2.
GC_INIT_WITH_REC  T)\

mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')
test_image = test_image*mask2[:,:,np.newaxis]

cv2.imwrite("/var/www/html/wowflux/public/test1.jpg",test_image)
e2 = cv2.getTickCount()
time = (e2 - e1)/ cv2.getTickFrequency()
print time

出于测试目的,我已经保存了文件并只测试了python脚本。我也遇到了同样的问题。

在我的本地主机上,程序对两个图像都正常工作。我在Amazon-EC2实例上面临问题,对于高分辨率图像也是如此。 对于高分辨率图像,如果我注释掉前景减法的代码,则会打印时间。因此,可以安全地假设问题在于为高分辨率图像运行Foreground减法。

0 个答案:

没有答案