我有一個圖像文件夾,我想繼續對它們(Motion History Image)MHI的處理。 因此,我不知道如何在FOR LOOP中連續拍攝2張圖像來處理它們。如何讀取文件夾中的兩個連續文件
任何幫助請,謝謝!
我有一個圖像文件夾,我想繼續對它們(Motion History Image)MHI的處理。 因此,我不知道如何在FOR LOOP中連續拍攝2張圖像來處理它們。如何讀取文件夾中的兩個連續文件
任何幫助請,謝謝!
下面的代碼將打開第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)
(希望能在這裏給貸款,我可能「借」從什麼地方上網本的代碼,但不記得在哪裏)
如果你想在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
你能分享一些代碼嗎?例如。展示如何循環遍歷單個文件,然後直接向您展示如何一次引用兩個文件。 – lenz
至於Python版本:你打算使用Python 2還是3?或者你是否試圖編寫2/3兼容代碼?後者是一個高貴的計劃,但我不推薦它,除非絕對必要,因爲它迫使你做一些醜陋的黑客。 – lenz