Google Colab 从 colabdisk 读取文件而不是上传
Google Colab reading files from colabdisk instead of upload
我有一个函数只适用于 colab.upload 而不是从 colab 磁盘上的文件向它传递文件名,我从云端硬盘上传。
我想使用 jpg 图片进行 TensorFlow 对象检测 API。
这是有效的:
uploaded = files.upload()
img_infer = list(uploaded)[0]
print('running test on: ' + img_infer)
img_inference(img_infer)
但不是这个:
for file in os.listdir("/content/test"):
print('running test on: ' + file)
img_infer = list(file)[0]
img_inference(img_infer)
错误:
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-31-4fbcedf7108a> in <module>()
12 print('Teste mit Bild: ' + file)
13 img_infer = list(file)[0]
---> 14 img_inference(img_infer)
2 frames
<ipython-input-8-6a0800ccaf6f> in img_inference(img_path)
50
51 def img_inference(img_path):
---> 52 image = read_image_bgr(img_infer)
53
54 # copy to draw on
/content/keras-retinanet/keras_retinanet/utils/image.py in read_image_bgr(path)
30 """
31 # We deliberately don't use cv2.imread here, since it gives no feedback on errors while reading the image.
---> 32 image = np.asarray(Image.open(path).convert('RGB'))
33 return image[:, :, ::-1].copy()
34
/usr/local/lib/python3.6/dist-packages/PIL/Image.py in open(fp, mode)
2528
2529 if filename:
-> 2530 fp = builtins.open(filename, "rb")
2531 exclusive_fp = True
2532
FileNotFoundError: [Errno 2] No such file or directory: 'I'
你的代码存在逻辑问题:
for file in os.listdir("/content/test"):
print('running test on: ' + file)
img_infer = list(file)[0] # <== This line is not correct
img_inference(img_infer)
您必须将 img_infer = list(file)[0]
更改为 img_infer = file
,或者只需删除 img_infer = list(file)[0]
并将 img_inference(img_infer)
更改为 img_inference(file)
。
换句话说:
for file in os.listdir("/content/test"):
print('running test on: ' + file)
img_inference(file)
为了进一步解释原始代码中发生的情况,假设 /content/test
包含 aaa.txt
、bbb.py
、ccc.jpg
。那么:
for file in os.listdir("/content/test"):
# In the first iteration file == "aaa.txt"
print('running test on: ' + file)
# But then list(file) == ["a", "a", "a", ".", "t", "x", "t"] which is not what you want.
# And then list(file)[0] == "a", therefore img_infer == "a"
img_infer = list(file)[0]
img_inference(img_infer)
希望对您有所帮助!
我有一个函数只适用于 colab.upload 而不是从 colab 磁盘上的文件向它传递文件名,我从云端硬盘上传。 我想使用 jpg 图片进行 TensorFlow 对象检测 API。
这是有效的:
uploaded = files.upload()
img_infer = list(uploaded)[0]
print('running test on: ' + img_infer)
img_inference(img_infer)
但不是这个:
for file in os.listdir("/content/test"):
print('running test on: ' + file)
img_infer = list(file)[0]
img_inference(img_infer)
错误:
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-31-4fbcedf7108a> in <module>()
12 print('Teste mit Bild: ' + file)
13 img_infer = list(file)[0]
---> 14 img_inference(img_infer)
2 frames
<ipython-input-8-6a0800ccaf6f> in img_inference(img_path)
50
51 def img_inference(img_path):
---> 52 image = read_image_bgr(img_infer)
53
54 # copy to draw on
/content/keras-retinanet/keras_retinanet/utils/image.py in read_image_bgr(path)
30 """
31 # We deliberately don't use cv2.imread here, since it gives no feedback on errors while reading the image.
---> 32 image = np.asarray(Image.open(path).convert('RGB'))
33 return image[:, :, ::-1].copy()
34
/usr/local/lib/python3.6/dist-packages/PIL/Image.py in open(fp, mode)
2528
2529 if filename:
-> 2530 fp = builtins.open(filename, "rb")
2531 exclusive_fp = True
2532
FileNotFoundError: [Errno 2] No such file or directory: 'I'
你的代码存在逻辑问题:
for file in os.listdir("/content/test"):
print('running test on: ' + file)
img_infer = list(file)[0] # <== This line is not correct
img_inference(img_infer)
您必须将 img_infer = list(file)[0]
更改为 img_infer = file
,或者只需删除 img_infer = list(file)[0]
并将 img_inference(img_infer)
更改为 img_inference(file)
。
换句话说:
for file in os.listdir("/content/test"):
print('running test on: ' + file)
img_inference(file)
为了进一步解释原始代码中发生的情况,假设 /content/test
包含 aaa.txt
、bbb.py
、ccc.jpg
。那么:
for file in os.listdir("/content/test"):
# In the first iteration file == "aaa.txt"
print('running test on: ' + file)
# But then list(file) == ["a", "a", "a", ".", "t", "x", "t"] which is not what you want.
# And then list(file)[0] == "a", therefore img_infer == "a"
img_infer = list(file)[0]
img_inference(img_infer)
希望对您有所帮助!