我编写了这段python代码,它从图像库中下载了许多图像,并将它们保存在指定的文件夹中。代码如下所示:
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=n00464651'
neg_images_urls = urllib.request.urlopen(neg_images_link).read().decode()
if not os.path.exists('neg'):
os.makedirs('neg')
pic_num = 1
for i in neg_images_urls.split('\n'):
try:
print(i)
urllib.request.urlretrieve(i, "neg/{}.jpg".format(pic_num))
img = cv2.imread("neg/{}.jpg".format(pic_num) + cv2.IMREAD_GRAYSCALE)
resized_image = cv2.resize(img, (100, 100))
cv2.imwrite("neg/{}.jpg".format(pic_num), resized_image)
pic_num = pic_num + 1
print(pic_num)
except Exception as e:
print(str(e))
store_raw_images()
由于某种原因,图像被替换,我看不到所有图像。我一直看到一张图片1.jpg
并且所有图片似乎都被替换了,但我希望图片的名称可以1.jpg
,2.jpg
,......。
我也看到了这个警告/错误,但我不确定它是否与此问题相关。
Can't convert 'int' object to str
http://www.azjeugd.nl/site/modules/xcgal/albums/20082009seizoen/a1/groningen_thuis/IMG_7798.jpg
HTTP Error 403: Forbidden
http://www.ga-eagles.nl/images/duels1e0809/gaetel6.jpg
您认为问题在哪里?
请注意,我正在递增图像编号:
pic_num = pic_num + 1
答案 0 :(得分:1)
您拥有一个try/except
块中的所有内容。假设cv2.imwrite
失败但所有其他行都没有任何问题,您的代码将永远不会到达picnum = picnum + 1
。
尝试重新排列首先增加picnum
的代码,并检查哪些行实际上会给您错误。