我正在尝试使用人脸识别来计算学生的总存在时间。这样,在下课时,我可以得到两件事: 1,学生在场的总时间。2,他出现的时间,以及他不出现的时间(即9:00-9:20(出席),9:20-9:22(不出席),9:22-9:42(出席))
这就是我正在做的事情。
在40分钟的课程中,每隔2分钟运行一个python文件,持续40秒。
每次运行该文件时,它都会将存在的学生in存储在列表数据结构中,并将其存储在数据库中。我在表中设置了totaClassTime/2列,因为文件每隔2分钟运行一次。在课程结束时( 40分钟后),它从数据库中读取数据,计算总的存在时间,并将其保存到数据库中。
有没有更好的方法来完成这一切,这样我就不必在表中创建classTime/2列?另一个歧义产生了:
如果对于一个学生,我们从DB获得以下数据:
9:00 9:02 9:04 9:06 9:18 9:10 9:12 9:14 9:16...
p p - p - p p p p ...在计算总存在时间时,它会将9:00到9:02的时间相加,然后将9:02-9:04视为缺席时间,9:04-9:06也是如此。但是,学生可能在b/w 9:04-9:06。我已经搜索了很多次,但找不到准确计算存在时间的方法。
发布于 2017-12-24 16:27:04
您可以将每个观察值存储在行中,而不是列中。这样的表格如下所示:
classId | studentId | observationTime | present
----------------------------------------------------
1 1 9:00 p
1 1 9:02 p
1 1 9:04 -
1 1 9:06 p
1 1 9:08 -
1 1 9:10 p
...然后,为了评估学生的在场时间,可以选择包含该学生在特定班级中的观察结果的所有行,并按时间排序。这可以通过类似下面的select语句来实现:
SELECT observationTime, present FROM observations WHERE classID='1' AND studentID='1' ORDER BY observationTime现在,您可以简单地对结果集进行迭代,并像以前一样计算此查询的存在时间。
你的学生在9:04-9:06之间的状态不清楚的问题可以通过定义你的观察被认为是有效的时间范围来解决。
您已经将类划分为两分钟帧(从9:00到9:02,从09:02到09:04等等)。现在,您可以说9:00观察对09:00到09:02这段时间有效,09:02观察对09:02到09:04这段时间有效,依此类推。这使您能够清楚地解释示例中的数据: 09:04观察值在09:04到09:06的时间内有效。由于该学生在09:04没有被观察,因此他被认为在此时段缺席。在09:06的下一次观察中,他是在场的,所以我们认为他是09:06到09:08的班级。
显然,这个学生并不是真的在09:04到09:06之间离开,除非他在09:06神奇地出现在他的座位上。但由于我们每隔一分钟才看一次课,所以我们只能在两分钟的分辨率下说明学生的存在。
您基本上是每隔两分钟对类在某个时间点的状态进行采样,并假设它表示类在整个两分钟内的状态。
https://stackoverflow.com/questions/47958892
复制相似问题