我有一个图像文件夹,我想继续处理它们(运动历史图像)MHI。 所以我不知道如何在 FOR LOOP 中连续拍摄2张图像来处理它们。
任何帮助,谢谢!
答案 0 :(得分:1)
如果您想以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
...:
plt.show()
答案 1 :(得分: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')
这个当然假定列表文件是正确排序的,因为数字字符串的排序方式可以不同,例如:
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']
您可以看到<{1>} 10.jpg
跟随1.jpg
一个如何做到这一点的例子很好地&#39;这里:
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)
(我很乐意在这里给予赞誉,因为我可能会在某处从互联网上借用这段代码,但不记得在哪里)