Python 按从特定位置开始的时间间隔对图像进行分组

Python 按从特定位置开始的时间间隔对图像进行分组,python,image,time,Python,Image,Time,我有一个脚本,它从图像中获取exif数据,并将其放入列表中。然后我对我的清单进行排序,这就是我所拥有的。这是一个二维数组,其中第一个元素是时间戳,第二个元素是图像路径: 我的img列表: [[32372, 'F:\\rubish\\VOL1\\cam\\G0013025.JPG'], [32373, 'F:\\rubish\\VOL1\\cam\\G0013026.JPG'], [32373, 'F:\\rubish\\VOL1\\cam\\G0013027.JPG'],.... etc

我有一个脚本,它从图像中获取exif数据,并将其放入列表中。然后我对我的清单进行排序,这就是我所拥有的。这是一个二维数组,其中第一个元素是时间戳,第二个元素是图像路径: 我的
img
列表:

[[32372, 'F:\\rubish\\VOL1\\cam\\G0013025.JPG'], 
 [32373, 'F:\\rubish\\VOL1\\cam\\G0013026.JPG'], 
 [32373, 'F:\\rubish\\VOL1\\cam\\G0013027.JPG'],.... etc etc etc
下面的脚本是由@blhsing和groups my images制作的。它工作得很好,但是我想把我的图片分组,不是从第一张图片开始,而是从任何给定的位置开始

这是@blhsing的脚本:

groups = []
for r in img:
    if groups and r[0] - groups[-1][-1][0] <= 5:
        groups[-1].append(r)
    else:
        groups.append([r])
for g in groups:
    print(g[0][1], g[0][0], g[-1][0], g[-1][1])
在本例中,我的
min_list
有两个位置,这意味着我只想创建两个组,并仅从这两个位置开始对图像进行分类,间隔与之前相同,为5秒

附言。 谢谢@pasch013它可以工作,但请检查一下,为什么结果是这样的,我从min_列表中得到mili如下:

min_list.sort()
print(min_list, " min list")
interval = 5
groups = []
#mili = [1, 99]
for start_time in min_list:
    i = 0

    while i < len(img) and img[i][0] < start_time:
        i += 1
    groups.append([])
    while i < len(img) and img[i][0] < start_time + interval:
        groups[-1].append(img[i])
        i += 1
    for ii in groups:
        print(ii[0][1], ii[0][0], ii[-1][0], ii[-1][1])
为什么我有3组而不是2组

现在正在正确创建第一组,但不想转到第二组,出现此错误

    Z:\GOPRO\2018-05-31\VOL0102\100GOPRO\G0013002.JPG 32357 32577 Z:\GOPRO\2018-05-31\VOL0102\100GOPRO\G0013442.JPG
  File "F:/piotrwork/detectione_voltigere/GOPR_test_zero.py", line 115, in <module>
    print(ii[0][1], ii[0][0], ii[-1][0], ii[-1][1])
IndexError: list index out of range
我的图像列表-img

[[32357, 'F:\\rubish\\VOL1\\cam\\G0013002.JPG'], [32357, 'F:\\rubish\\VOL1\\cam\\G0013003.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013004.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013005.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013006.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013007.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013008.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013009.JPG'], [32361, 'F:\\rubish\\VOL1\\cam\\G0013010.JPG'], [35706, 'F:\\rubish\\VOL1\\cam1\\G0075992.JPG'], [35706, 'F:\\rubish\\VOL1\\cam1\\G0075993.JPG'], [35707, 'F:\\rubish\\VOL1\\cam1\\G0075994.JPG'], [35707, 'F:\\rubish\\VOL1\\cam1\\G0075995.JPG'], [35708, 'F:\\rubish\\VOL1\\cam1\\G0075996.JPG'], [35708, 'F:\\rubish\\VOL1\\cam1\\G0075997.JPG'], [36687, 'F:\\rubish\\VOL1\\cam\\G0086476.JPG'],
还有我的最后一张照片

    32345 temps GOPR
F:\rubish\VOL1\cam\GOPR3001.JPG path + temps 32345
32357 min
Traceback (most recent call last):
  File "F:/piotrwork/detectione_voltigere/GOPRO_test_zero_one.py", line 121, in <module>
    print(ii[0][1], ii[0][0], ii[-1][0], ii[-1][1])
IndexError: list index out of range
35292 temps GOPR
F:\rubish\VOL1\cam1\GOPR5405.JPG path + temps 35292
35706 min
[[32357, 'F:\\rubish\\VOL1\\cam\\G0013002.JPG'], [32357, 'F:\\rubish\\VOL1\\cam\\G0013003.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013004.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013005.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013006.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013007.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013008.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013009.JPG'], [32361, 'F:\\rubish\\VOL1\\cam\\G0013010.JPG'], [35706, 'F:\\rubish\\VOL1\\cam1\\G0075992.JPG'], [35706, 'F:\\rubish\\VOL1\\cam1\\G0075993.JPG'], [35707, 'F:\\rubish\\VOL1\\cam1\\G0075994.JPG'], [35707, 'F:\\rubish\\VOL1\\cam1\\G0075995.JPG'], [35708, 'F:\\rubish\\VOL1\\cam1\\G0075996.JPG'], [35708, 'F:\\rubish\\VOL1\\cam1\\G0075997.JPG'], [36687, 'F:\\rubish\\VOL1\\cam\\G0086476.JPG'], [36688, 'F:\\rubish\\VOL1\\cam\\G0086477.JPG'], [36688, 'F:\\rubish\\VOL1\\cam\\G0086478.JPG'], [36689, 'F:\\rubish\\VOL1\\cam\\G0086479.JPG'], [36689, 'F:\\rubish\\VOL1\\cam\\G0086480.JPG'], [36690, 'F:\\rubish\\VOL1\\cam1\\G0086481.JPG'], [36690, 'F:\\rubish\\VOL1\\cam1\\G0086482.JPG'], [36691, 'F:\\rubish\\VOL1\\cam1\\G0086483.JPG']]
[32357, 35706]  min list
32357
[[[32357, 'F:\\rubish\\VOL1\\cam\\G0013002.JPG'], [32357, 'F:\\rubish\\VOL1\\cam\\G0013003.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013004.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013005.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013006.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013007.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013008.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013009.JPG'], [32361, 'F:\\rubish\\VOL1\\cam\\G0013010.JPG']]] grrrr
35706
[[[32357, 'F:\\rubish\\VOL1\\cam\\G0013002.JPG'], [32357, 'F:\\rubish\\VOL1\\cam\\G0013003.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013004.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013005.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013006.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013007.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013008.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013009.JPG'], [32361, 'F:\\rubish\\VOL1\\cam\\G0013010.JPG']], []] grrrr
F:\rubish\VOL1\cam\G0013002.JPG 32357 32361 F:\rubish\VOL1\cam\G0013010.JPG
32345临时GOPR
F:\rubish\VOL1\cam\GOPR3001.JPG路径+temps 32345
32357分钟
回溯(最近一次呼叫最后一次):
文件“F:/piotrwork/detectione_voltigere/GOPRO_test_zero_one.py”,第121行,in
打印(ii[0][1]、ii[0][0]、ii[-1][0]、ii[-1][1])
索引器:列表索引超出范围
35292临时GOPR
F:\rubish\VOL1\cam1\GOPR5405.JPG路径+temps 35292
35706分钟
[32357',F:\\rubish\\VOL1\\VOL1\\cam\\G0013002.JPG'],[32357',F:\\rubish\\VOL1\\cam\\G0013003.JPG'],[32358',F:\\rubish\\VOL1\\cam\\G0013004.JPG'],[32359',F:\\rubish\\VOL1\\cam\\G0013003.JPG'],[32359',F:\\rubish\\VOL1\\cam\\G0013006.JPG'],[32359',F:\\rubish\\VOL1\\013007.JPG'],[32359',[32360',F:\\rubish\\VOL1\\cam\\G0013009.JPG'],[32361',F:\\rubish\\VOL1\\cam\\G0013010.JPG'],[35706',F:\\rubish\\VOL1\\cam1\\G0075992.JPG'],[35706',F:\\rubish\\VOL1\\cam1\\G0075993.JPG'],[35707',F:\\rubish\\VOL1\\cam1\\G0075994.JPG'],[35707',F:\\rubish\\cam1\\cam1\\cam1\\gam1\\075995.JPG'],[35708',F:\\rubish\\VOL1\\cam1\\G0075997.JPG'],[36687',F:\\rubish\\VOL1\\cam\\G0086476.JPG'],[36688',F:\\rubish\\VOL1\\cam\\G0086477.JPG'],[36689',F:\\rubish\\VOL1\\cam\\G0086478.JPG'],[36689',F:\\rubish\\VOL1\\cam\\G0086479.JPG'],[36689',F:\\rubish\\VOL1\\cam\\G0086479.JPG'],[36690,'F:\\rubish\\VOL1\\cam1\\G0086482.JPG'],[36691,'F:\\rubish\\VOL1\\cam1\\G0086483.JPG']
[3235735706]最小列表
32357
[32357',F:\\rubish\\VOL1\\cam\\G0013002.JPG'],[32357',F:\\rubish\\VOL1\\cam\\G0013003.JPG'],[32358',F:\\rubish\\VOL1\\cam\\G0013004.JPG'],[32358',F:\\rubish\\VOL1\\cam\\G0013005.JPG'],[32359',F:\\rubish\\VOL1\\cam\\G0013006.JPG'],[32359',F:\\rubish\\VOL1\\cam\\013007.JPG'],[32359',[32360',F:\\rubish\\VOL1\\cam\\G0013009.JPG'],[32361',F:\\rubish\\VOL1\\cam\\G0013010.JPG']]grrrr
35706
[32357',F:\\rubish\\VOL1\\cam\\G0013002.JPG'],[32357',F:\\rubish\\VOL1\\cam\\G0013003.JPG'],[32358',F:\\rubish\\VOL1\\cam\\G0013004.JPG'],[32358',F:\\rubish\\VOL1\\cam\\G0013005.JPG'],[32359',F:\\rubish\\VOL1\\cam\\G0013006.JPG'],[32359',F:\\rubish\\VOL1\\cam\\013007.JPG'],[32359',[32360',F:\\rubish\\VOL1\\cam\\G0013009.JPG'],[32361',F:\\rubish\\VOL1\\cam\\G0013010.JPG'],[]grrrr
F:\rubish\VOL1\cam\G0013002.JPG 32357 32361 F:\rubish\VOL1\cam\G0013010.JPG
进程已完成,退出代码为1

请尝试:

group_time = 5
groups = []
mili = [1, 99]
for start_time in mili:
    i = 0

    while i < len(img) and img[i][0] < start_time:
        i += 1
    groups.append([])
    while i < len(img) and img[i][0] < start_time + group_time:
        groups[-1].append(img[i])
        i += 1

print(groups)
在内部for循环中,而我认为您只想打印一次。只需取消输入它们,它就可以按照您的需要工作:

min_list.sort()
print(min_list, " min list")
interval = 5
groups = []
#mili = [1, 99]
for start_time in min_list:
    i = 0

    while i < len(img) and img[i][0] < start_time:
        i += 1
    groups.append([])
    while i < len(img) and img[i][0] < start_time + interval:
        groups[-1].append(img[i])
        i += 1
for ii in groups:
    print(ii[0][1], ii[0][0], ii[-1][0], ii[-1][1])

第一个代码段的输出是什么?如果我运行它,我会得到没有任何意义的结果。
[[32357, 'F:\\rubish\\VOL1\\cam\\G0013002.JPG'], [32357, 'F:\\rubish\\VOL1\\cam\\G0013003.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013004.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013005.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013006.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013007.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013008.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013009.JPG'], [32361, 'F:\\rubish\\VOL1\\cam\\G0013010.JPG'], [35706, 'F:\\rubish\\VOL1\\cam1\\G0075992.JPG'], [35706, 'F:\\rubish\\VOL1\\cam1\\G0075993.JPG'], [35707, 'F:\\rubish\\VOL1\\cam1\\G0075994.JPG'], [35707, 'F:\\rubish\\VOL1\\cam1\\G0075995.JPG'], [35708, 'F:\\rubish\\VOL1\\cam1\\G0075996.JPG'], [35708, 'F:\\rubish\\VOL1\\cam1\\G0075997.JPG'], [36687, 'F:\\rubish\\VOL1\\cam\\G0086476.JPG'],
    32345 temps GOPR
F:\rubish\VOL1\cam\GOPR3001.JPG path + temps 32345
32357 min
Traceback (most recent call last):
  File "F:/piotrwork/detectione_voltigere/GOPRO_test_zero_one.py", line 121, in <module>
    print(ii[0][1], ii[0][0], ii[-1][0], ii[-1][1])
IndexError: list index out of range
35292 temps GOPR
F:\rubish\VOL1\cam1\GOPR5405.JPG path + temps 35292
35706 min
[[32357, 'F:\\rubish\\VOL1\\cam\\G0013002.JPG'], [32357, 'F:\\rubish\\VOL1\\cam\\G0013003.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013004.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013005.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013006.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013007.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013008.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013009.JPG'], [32361, 'F:\\rubish\\VOL1\\cam\\G0013010.JPG'], [35706, 'F:\\rubish\\VOL1\\cam1\\G0075992.JPG'], [35706, 'F:\\rubish\\VOL1\\cam1\\G0075993.JPG'], [35707, 'F:\\rubish\\VOL1\\cam1\\G0075994.JPG'], [35707, 'F:\\rubish\\VOL1\\cam1\\G0075995.JPG'], [35708, 'F:\\rubish\\VOL1\\cam1\\G0075996.JPG'], [35708, 'F:\\rubish\\VOL1\\cam1\\G0075997.JPG'], [36687, 'F:\\rubish\\VOL1\\cam\\G0086476.JPG'], [36688, 'F:\\rubish\\VOL1\\cam\\G0086477.JPG'], [36688, 'F:\\rubish\\VOL1\\cam\\G0086478.JPG'], [36689, 'F:\\rubish\\VOL1\\cam\\G0086479.JPG'], [36689, 'F:\\rubish\\VOL1\\cam\\G0086480.JPG'], [36690, 'F:\\rubish\\VOL1\\cam1\\G0086481.JPG'], [36690, 'F:\\rubish\\VOL1\\cam1\\G0086482.JPG'], [36691, 'F:\\rubish\\VOL1\\cam1\\G0086483.JPG']]
[32357, 35706]  min list
32357
[[[32357, 'F:\\rubish\\VOL1\\cam\\G0013002.JPG'], [32357, 'F:\\rubish\\VOL1\\cam\\G0013003.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013004.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013005.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013006.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013007.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013008.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013009.JPG'], [32361, 'F:\\rubish\\VOL1\\cam\\G0013010.JPG']]] grrrr
35706
[[[32357, 'F:\\rubish\\VOL1\\cam\\G0013002.JPG'], [32357, 'F:\\rubish\\VOL1\\cam\\G0013003.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013004.JPG'], [32358, 'F:\\rubish\\VOL1\\cam\\G0013005.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013006.JPG'], [32359, 'F:\\rubish\\VOL1\\cam\\G0013007.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013008.JPG'], [32360, 'F:\\rubish\\VOL1\\cam\\G0013009.JPG'], [32361, 'F:\\rubish\\VOL1\\cam\\G0013010.JPG']], []] grrrr
F:\rubish\VOL1\cam\G0013002.JPG 32357 32361 F:\rubish\VOL1\cam\G0013010.JPG
group_time = 5
groups = []
mili = [1, 99]
for start_time in mili:
    i = 0

    while i < len(img) and img[i][0] < start_time:
        i += 1
    groups.append([])
    while i < len(img) and img[i][0] < start_time + group_time:
        groups[-1].append(img[i])
        i += 1

print(groups)
for ii in groups:
    print(ii[0][1], ii[0][0], ii[-1][0], ii[-1][1])
min_list.sort()
print(min_list, " min list")
interval = 5
groups = []
#mili = [1, 99]
for start_time in min_list:
    i = 0

    while i < len(img) and img[i][0] < start_time:
        i += 1
    groups.append([])
    while i < len(img) and img[i][0] < start_time + interval:
        groups[-1].append(img[i])
        i += 1
for ii in groups:
    print(ii[0][1], ii[0][0], ii[-1][0], ii[-1][1])
min_list.sort()
print(min_list, " min list")
interval = 5
groups = []
#mili = [1, 99]
for start_time in min_list:
    i = 0

    while i < len(img) and img[i][0] < start_time:
        i += 1
    groups.append([])
    while i < len(img) and img[i][0] < img[i-1][0] + interval or img[i][0] < start_time + interval:
        groups[-1].append(img[i])
        i += 1
for ii in groups:
    print(ii[0][1], ii[0][0], ii[-1][0], ii[-1][1])