2017-04-21 62 views
0

我有一個圖像文件夾,我想繼續對它們(Motion History Image)MHI的處理。 因此,我不知道如何在FOR LOOP中連續拍攝2張圖像來處理它們。如何讀取文件夾中的兩個連續文件

任何幫助請,謝謝!

+0

你能分享一些代碼嗎?例如。展示如何循環遍歷單個文件,然後直接向您展示如何一次引用兩個文件。 – lenz

+0

至於Python版本:你打算使用Python 2還是3?或者你是否試圖編寫2/3兼容代碼?後者是一個高貴的計劃,但我不推薦它,除非絕對必要,因爲它迫使你做一些醜陋的黑客。 – lenz

回答

0

下面的代碼將打開第2個檔,然後是第二對新文件,等等等等

files = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg'] 

counter = 0 
while counter < len(files): 
    file1 = open(files[counter], 'r') 
    file2 = open(files[counter + 1], 'r') 
    counter += 2 

的原因for循環是行不通的,是2.JPG是部分第一組文件中,沒有指定步驟的for循環,2.jpg是第二組的第一個文件,這是不正確的。

所以要做到這一點在for循環中,你需要的東西是這樣的:

for i in range(0, len(files), 2): 
    file1 = open(files[i], 'r') 
    file2 = open(files[i + 1], 'r') 

這ofcourse假定列表文件被正確分類,如數字,字符串可以有不同的分類,例如:

files = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg'] 
files = sorted(files) 

會產生:

['1.jpg', '10.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg'] 

,你可以看到,10.jpg如下1.jpg 如何做到這一點「很好」這裏有一個例子:

import re 

def sorted_nicely(l, reverse=False): 
    """ Sort the given iterable in the way that humans expect.""" 
    convert = lambda text: int(text) if text.isdigit() else text 
    alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key)] 
    return sorted(l, key = alphanum_key, reverse=reverse) 

(希望能在這裏給貸款,我可能「借」從什麼地方上網本的代碼,但不記得在哪裏)

1

如果你想在2 by 2方式使用工作:

files = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg'] 
for img1, img2 in zip(files[::2], files[1::2]): 
    #do something 

,如果你想在方式1-2結合,2-3 ...:

for img1, img2 in zip(files, files[1:]): 
    #do something 
相關問題