gpt4 book ai didi

python - 按时差算法对 Timelapses 进行分组

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:38:34 27 4
gpt4 key购买 nike

我正在尝试编写一个程序,根据时间戳将 Timelapse 照片组合在一起。延时照片和随机照片在一个文件夹中。

例如,如果上一张和当前照片之间的时间戳差异(秒)为:346、850、13、14、13、14、15、12、12、13、16、11、438。

你可以合理猜测游戏中时光倒流从 13 点开始到 11 点结束。

现在我正在尝试一个 hacky 解决方案来比较与前一个的百分比差异。

但必须有一个公式/算法来按时差将时间戳组合在一起。滚动平均或其他东西。

我在寻找一个简单的解决方案吗?谢谢你!

def cat_algo(文件夹):

# Get a list with all the CR2 files in the folder we are processing
file_list = folder_to_file_list(folder)

# Extract the timestamp out of the CR2 file into a sorted dictionary
cr2_timestamp = collections.OrderedDict()
for file in file_list:
cr2_timestamp[file] = return_date_from_raw(file)
print str(file) + " - METADATA TIMESTAMP: " + \
str(return_date_from_raw(file))

# Loop over the dictionary to compare the timestamps and create a new dictionary with a suspected group number per shot
# Make sure we know that there is no first file yet using this (can be refractored)
item_count = 1
group_count = 0
cr2_category = collections.OrderedDict()
# get item and the next item out of the sorted dictionary
for item, nextitem in zip(cr2_timestamp.items(), cr2_timestamp.items()[1::]):

# if not the first CR2 file
if item_count >= 2:
current_date_stamp = item[1]
next_date_stamp = nextitem[1]

delta_previous = current_date_stamp - previous_date_stamp
delta_next = next_date_stamp - current_date_stamp

try:
difference_score = int(delta_next.total_seconds() /
delta_previous.total_seconds() * 100)
print "diffscore: " + str(difference_score)
except ZeroDivisionError:
print "zde"

if delta_previous > datetime.timedelta(minutes=5):
# if difference_score < 20:
print item[0] + " - hit - " + str(delta_previous)
group_count += 1
cr2_category[item[0]] = group_count
else:
cr2_category[item[0]] = group_count

# create a algo to come up with percentage difference and use this to label timelapses.
print int(delta_previous.total_seconds())
print int(delta_next.total_seconds())

# Calculations done, make the current date stamp the previous datestamp for the next iteration
previous_date_stamp = current_date_stamp

# If time difference with previous over X make a dict with name:number, in the end everything which has the
# same number 5+ times in a row can be assumed as a timelapse.

else:
# If it is the first date stamp, assign it the current one to be used in the next loop
previous_date_stamp = item[1]

# To help make sure this is not the first image in the sequence.
item_count += 1

print cr2_category

最佳答案

如果您使用 itertools.groupby,如果延迟符合延时照片区域的标准,则使用返回 True 的函数,基于延迟列表,您可以获得每个此类区域的索引。基本上,我们根据该函数的 True/False 输出进行分组。

from itertools import groupby

# time differences given in original post
data = [346, 850, 13, 14, 13, 14, 15, 12, 12, 13, 16, 11, 438]

MAX_DELAY = 25 # timelapse regions will have a delay no larger than this
MIN_LENGTH = 3 # timelapse regions will have at least this many photos

index = 0
for timelapse, g in groupby(data, lambda x: x <= MAX_DELAY):
length = len(list(g))
if (timelapse and length > MIN_LENGTH):
print ('timelapse index {}, length {}'.format(index, length))
index += length

输出:

timelapse index 2, length 10

关于python - 按时差算法对 Timelapses 进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54559663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com