2010-01-27 80 views
3

我正在编写python代码,以便从网络中获取图像并计算标准偏差...并使用它进行其他图像处理。我有以下代码:直接从网络对图片进行Python图像处理

from scipy import ndimage 
from urllib2 import urlopen 
from urllib import urlretrieve 
import urllib2 
import Image 
import ImageFilter 

def imagesd(imagelist): 
for imageurl in imagelist: 
    opener1 = urllib2.build_opener() 
    page1 = opener1.open(imageurl) 
    im = page1.read() 
    #localfile = urlretrieve( 
    #img = Image.fromstring("RGBA", (1,1), page1.read()) 
    #img = list(im.getdata()) 
    # page1.read() 
    print img 
    #standard_deviation(p 

现在,我一直来回,因为我不知道如何直接从网上取图像,而无需将其保存到磁盘,并将它传递给标准偏差功能。

任何提示/帮助将不胜感激。

谢谢。

+1

???你有图像。你已经打开它。你有一个标准差功能。为什么你需要将它保存到磁盘? 究竟是什么问题? – 2010-01-27 10:14:23

回答

4

PIL(Python Imaging Library)方法“fromstring”和“frombuffer”期望图像数据处于未压缩格式。 当你做page1.read()你会得到二进制文件数据。为了让PIL理解它,你必须使这个数据模仿一个文件,并将它传递给“Image.open”方法,该方法可以理解文件格式,因为它是从网上读取的(即.jpg,gif或.png数据而不是原始像素值)

尝试是这样的:

from cStringIO import StringIO 
(...) 
    data = StringIO(page1.read()) 
    img = Image.open(data)