【问题标题】:How to calculate the presence time of student during a class session with image processing如何使用图像处理计算学生在课堂上的在场时间
【发布时间】:2017-12-24 07:35:39
【问题描述】:

我正在尝试使用人脸识别计算学生的总在场时间。这样在课堂结束时我可以得到两件事:1,学生在场的总时间。 2,从什么时候到什么时候他在场,和他不在场时相同(即9:00-9:20(现在)、9:20-9:22(不在场)、9:22-9 :42(现在))

这就是我的做法。

在 40 分钟课程中,python 文件每 2 分钟运行 40 秒。

每次文件运行时,它都会以列表数据结构存储在场学生的 ID,并将其存储在数据库中。当文件每 2 分钟运行一次时,我在表中创建了 totaClassTime/2 列。在课程结束时(40 分钟后),它从 DB 中读取数据并计算总存在时间并将其保存在 DB 中。

有没有更好的方法来做到这一点,这样我就不必在表中创建 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 也是如此。但是学生可能在 9:04-9:06 之前在场。我搜索了很多,但找不到准确计算在场时间的方法。

【问题讨论】:

    标签: python database image-processing logic


    【解决方案1】:

    您可以将每个观察值存储在一行而不是一列中。这样的表如下所示:

     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 准确地在他的座位上神奇地现身。但由于我们只每隔一分钟看一次班级,我们只能以两分钟的分辨率来解释学生的存在。

    您基本上每两分钟对班级的状态进行一次抽样,并假设它代表了整个两分钟的班级状态。

    【讨论】:

    • 很高兴,我能帮上忙。您能否将分析器标记为接受,以便清楚地表明您的问题已解决?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2020-11-30
    相关资源
    最近更新 更多