2017-12-24 34 views
0

私は、顔認識を使用する生徒の合計存在時間を計算しようとしています。そのようなクラスの終わりに私は2つのことを得ることができます:1、学生がいた合計時間。彼が存在していない時(すなわち、9:00-9:20(現在)、9:20-9:22(存在しない)、9:22-9 :42(現在))画像処理によるクラスセッション中の生徒の存在時間の計算方法

これは私がやっている方法です。

40分クラスでは、pythonファイルは2分ごとに40秒間実行されます。

ファイルが実行されるたびに、存在する学生のIDがリストデータ構造に格納され、DBに格納されます。 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を検討する午前9時から9時02分までの時間を追加します。 02-9:04は休憩時間、9:04〜09:06は同じです。しかし、学生は9:04-9:06のベテランであるかもしれません。私はたくさんの検索をしましたが、存在時間を正確に計算する方法を見つけることができませんでした。

答えて

0

各観測値を列ではなく行に格納することができます。

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の間に不明瞭なプレゼンス状態を持つ生徒の問題は、あなたの所見が有効であると考えられる期間を定義することで解決できます。

すでにクラスを2分のフレームに分割しています(9:00〜9:02、09:02〜09:04など)。今度は、09: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の間に完全な時間がなかったのは明らかでした。しかし、私たちは分単位でクラスを見るだけで、2分の解決で学生の存在を説明することができます。

基本的には、2分ごとに特定の時点でクラスの状態のサンプルを取得し、それが2分全体のクラスの状態を表すと仮定します。

+0

ありがとう:)私の問題を解決しました – Zoha

+0

うれしいことに、私は助けることができました。あなたの問題が解決されたことが明らかになるように、anserをacceptとしてマークできますか?ありがとう –

関連する問題