2010-01-27 34 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)