2017-04-21 7 views
0

私は画像のフォルダを持っており、私は(動き履歴画像)MHIの処理を進めたいと思います。 for LOOPで2枚の画像を連続して撮る方法がわかりませんでした。フォルダ内の連続する2つのファイルを読み取る方法

ありがとうございました!

+0

いくつかのコードを共有できますか?例えば。 1つのファイルを繰り返し処理する方法を示しています。次に、2つのファイルを同時に参照する方法を簡単に示しています。 – lenz

+0

Pythonバージョンについて:Python 2または3で作業する予定ですか?または、2/3互換のコードを書こうとしていますか?後者は貴重な計画ですが、絶対に必要な場合を除いてはお勧めしません。なぜなら、あなたは数多くの醜いハッキングを強制するからです。 – lenz

答えて

0

次のコードは、等々ように、最初の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ループAが動作しない理由は、2.JPGが一部であるということです最初のファイルセットのうち、ステップを指定しないforループでは、2.jpgが2番目のセットの最初のファイルであり、これは間違っています。

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 
関連する問題