カメラを使った人物追跡ソフト開発!(序章)

f:id:daichi-t-0123:20170624185858j:plain
今回は、Raspberry PiWEBカメラを使用して「人物追跡ソフト」について書こうと思います。

そもそも、「人物追跡ソフト」って何よ?
私が勝手に命名しました!

どんなものかと言うと、

カメラの前に人が通ったら人を認識して
モニターに人を□で囲んで表示させる。

って感じのソフトになります。
前に、人の顔を認識するものを作成しましたが、それの人(全身)版です!!


では、今後の作成するためのスケジュールはといいますと、こんな感じになっています。

  1. 人(全体)を認識するソフトの作成。
  2. カメラのどこから人が来たかを感知するソフトの作成。(※1)
  3. カメラの前を横切った人を正確にカウントするソフトの作成(※2)

※1
 通路の端にカメラを設置した場合、右から左に行く人と左から右に行く人が出てきます。
 それを画面のどこから来たかを保持させる。

※2
 ※1のどこから来たか保持したものを使用して、
 過ぎ去る際のカウントを行わないようにして2重カウントを防ぐ。


こんな感じのプランで進めていこうと思います。
まずは、出来るか調査しないと、、、


それでは、また!


励みになりますので1クリックお願いします。

近況報告~

どうも、お久しぶりです。

何かとバタバタしていたせいも有りブログの更新がおろそかになってました。。。


Raspberry Piについての新たな知識を得たので、それについて書こうと思ってます。

それではまた!

謹賀新年 2017年

あけましておめでとうございます。

本年も少しずではありますが、更新していきます。

今年は、IoT関連はもちろんVBからC#への変換などをまとめていこうかと思っております。

祝・アクセス100!

こんなブログでもアクセス数100に達しました!
ほとんど、社内のメンバーなような気もするけど。。。

今後とも宜しくお願いします。

GROUP JOINの複数結合について(Linq To Entities )

なんかうまく行ったので残しておきます。
絶対にSQLで書いたほうが見やすくメンテもし易いと思いますが。。

さて、話を戻して複数条件の結合方法です!
下記のようなテーブルから、データを結合させて出力するパターンです。
f:id:daichi-t-0123:20161102144039p:plain

AAA、BBB、CCCの3つのテーブルをもとにDDDのテーブルを作成します。

Dim con As New DATABASS
Dim JoinList = con.CCC.GroupJoin(con.AAA, Function(ccc) New With {Kye .ID = Ctype(ccc.社員ID,Integer), Kye .コード = Ctype(ccc.部署コード,Integer)},
                                          Function(aaa) New With {Kye .ID = Ctype(aaa.社員ID,Integer), Kye .コード = Ctype(aaa.部署コード,Integer)},
                                          Function(ccc, aaa) New With {ccc, aaa}) _
                      .SelectMany(Function(Sccc) Sccc.aaa.DefaultIfEmpty(), Function(ccc, aaa) New With {ccc.ccc, aaa}) _
                      .GroupJoin(con.BBB, Function(ccc) ccc.ccc.部署コード, aaa.部署コード, Function(ccc, bbb) New With {ccc, bbb}) _
                      .SelectMany(Function(Sccc) Sccc.bbb.DefaultIfEmpty(), _
                                  Function(ccc, bbb) New With {Key .SEQ = ccc.ccc.SEQ,
                                                               Key .名前 = ccc.aaa.名前,
                                                               Key .部署名 = bbb.部署名,
                                                               Key .請求書発行NO1 = ccc.ccc.請求書発行NO}).ToArray

※ポイントは「GROUPJOIN」のキーの型を比較元と比較先で合わせる。
※integer?とintegerは別として扱われるため注意。
そんなのも知らないのかと思われますが、「?」がつくとNullが入っててもOKとするような意味合いになります。

出力は変わらないので前の記事を参照して下さい。
mmdaics.hateblo.jp

以上。

JOINやGROUPJOINで複数条件の結合を実施する方法(Linq To Entities )

Dim List = (From AAA In aaa Join BBB In bbb On AAA.コード
            Equals AAA.コード And BBB.コード Equals AAA.ID Order By BBB.ID) _
            .Select(Function(AAABBB) New With{Key .部署コード =AAABBB.AAA.コード,
                                              Key .個人ID = hoktok.AAA.ID,
                                              Key .担当者名 = AAABBB.BBB.名前}).ToArray

DefaultIfEmptyを使用すれば、LeftJoinもできます。
ただ結合条件を固定値でみれないです。(例えば、1 Equals AAA.コード )

SQLを直接記述して実行(Linq To Entities )

今回はLinqSQL文を直接記述してデータベースと通信しようという話です。

ん?それなら、SQL文だけで良いじゃないかって?

た、多分、こっちのほうが処理速度が向上するんですよきっと(*_*)!!


そんなわけで、記述方法載せておきます。

'登録
Dim Data1 As Integer = con.Database.ExecuteSqlCommand("INSERT FROM AAA")
'変更
Dim Data2 As Integer = con.Database.ExecuteSqlCommand("UPDATE FROM AAA")
'削除
Dim Data3 As Integer = con.Database.ExecuteSqlCommand("DELETE FROM AAA")

※integer型に入るのは処理件数(?)
 実際に調べていないので、間違っている可能性あります。。。

'取得
Dim Data4 = con.Database.SqlQuery(Of AAA)("Select * FROM AAA")

どちらも、本当にSQL文そのままでしたねw
試してないですけど、取得したデータはいつもの「For Each」で出力可能だと思います。

あやふやな内容で申し訳ないのです(><)
一応、メモと言うことで参考までにしておいて下さい。

以上!