2016-03-12 103 views
-1

我試圖運行此代碼。但它不起作用。想法是訪問帶有images'url的文件,訪問這些圖像,調整大小並保存圖像。我使用Python 3.4,opencv 3.0和Visual Studio。歡迎任何幫助。使用urllib下載圖像

import urllib.request 
import cv2 
import numpy as np 
import os 

def store_raw_images(): 
    neg_images_link = 'http://image-  net.org/api/text/imagenet.synset.geturls?wnid=n07942152' 
    neg_image_urls = urllib.request.urlopen(neg_images_link).read().decode() 
    pic_num = 1 

    if not os.path.exists('neg'): 
     os.makedirs('neg') 

    for i in neg_image_urls.split('\n'): 
    try: 
     print(i) 
     urllib.request.urlretrieve(i, "neg/"+str(pic_num)+".jpg") 
     img = cv2.imread("neg/"+str(pic_num)+".jpg",cv2.IMREAD_GRAYSCALE) 
     # should be larger than samples/pos pic (so we can place our image on it) 
     resized_image = cv2.resize(img, (100, 100)) 
     cv2.imwrite("neg/"+str(pic_num)+".jpg",resized_image) 
     pic_num += 1 

    except Exception as e: 
     print(str(e)) 
+1

您能告訴我們它不起作用嗎?如果你遇到異常,你能提供回溯嗎?如果不是,那麼意外的結果是什麼? – snakecharmerb

+0

當我運行代碼....我只有「按任意鍵繼續...」。沒有別的。什麼都不保存 –

+0

程序應該訪問包含url圖像列表的頁面,redimension並將圖像保存到文件夾中。 –

回答

0

添加

store_raw_images() 

到文件的末尾,以便在運行VS.當執行功能

這樣可以解決您的問題,但不是很好的風格,因爲只要您的模塊被導入,函數就會被執行 - 通常您需要更多的控制權來執行代碼。

爲了使這個爲可以在命令行中運行的腳本,加

if __name__ == '__main__': 
    store_raw_images() 

如果調用的命令行腳本這將執行的功能,但如果您導入模塊到另一個模塊或腳本的功能將不會執行,直到您撥打電話store_raw_images()

+0

很高興知道。謝謝! –