在Python中指定文件路径时出错

时间:2017-06-24 11:49:29

标签: python

我是python的新手并且不太了解它。 我想修改在线代码,将我的图像数据转换为lmdb格式。

我给了src的根,dst如下: paths_src =' F:\ caffe-windows \ caffe-windows \ data \ sift-flow \ test \' path_dst =' F:\ caffe-windows \ caffe-windows \ data \ sift-flow \ testlmdb'

但在我运行代码后出现错误。看来我的路是错的?有人可以帮忙吗?我还附上了代码。

import os
import numpy as np
from scipy import io
import lmdb
import caffe
from PIL import Image

NUM_IDX_DIGITS = 10
IDX_FMT = '{:0>%d' % NUM_IDX_DIGITS + 'd}'

print '1111'

paths_src = 'F:\\caffe-windows\\caffe-windows\\data\\sift-flow\\test\\'
path_dst = 'F:\\caffe-windows\\caffe-windows\\data\\sift-flow\\testlmdb'

print '2222'

def img_to_lmdb(paths_src,path_dst):
    in_db = lmdb.open(path_dst, map_size=int(1e9))
    with in_db.begin(write=True) as in_txn:
        for in_idx, in_ in enumerate(paths_src):
            print 'img:::'+str(in_)
            # load image:
            # - as np.uint8 {0, ..., 255}
            # - in BGR (switch from RGB)
            # - in Channel x Height x Width order (switch from H x W x C)
            im = np.array(Image.open(in_)) # or load whatever ndarray you need
            im = im[:,:,::-1]
            im = im.transpose((2,0,1))
            im_dat = caffe.io.array_to_datum(im)
            in_txn.put('{:0>10d}'.format(in_idx), im_dat.SerializeToString())
    in_db.close()



img_to_lmdb(paths_src,path_dst)
print '3333'

enter image description here

1 个答案:

答案 0 :(得分:0)

我对这个库并不熟悉,但你的问题始于这一行 -
for in_idx, in_ in enumerate(paths_src):

因为paths_src是一个可迭代的字符串,内置函数枚举只是遍历该字符串中的每个字符,所以第一个项目是字母“F”而不是整个路径。 你应该做的是将paths_src定义为一个列表。所以代替:

paths_src = 'F:\\caffe-windows\\caffe-windows\\data\\sift-flow\\test\\'

你应该这样做:

paths_src = ['F:\\caffe-windows\\caffe-windows\\data\\sift-flow\\test\\']

希望我能提供帮助。