開発備忘録

備忘録

画像認識

久しぶりの更新。

プログラミング記事ははてなブログに書くのではなくてQjitaとかに書くのがいいのではないかと思いながらも備忘録をはてなブログに残している。

あくまでもこちらは日記ですので

 

 

Webカメラで顔認識をして、一瞬外れたMATを保存する機能を付ける

 

まず、Webカメラ画像をメモリに格納して、それらの画像をAIに通して顔があるか判定する。

ただ、AI処理には時間がかかるので、全画像を認識できず、3枚に1回とかしか識別できないというイメージ。

 

例えば「1」画像をAIに通して顔を識別する。

識別している間でもWebカメラからは画像がメモリに格納され続けて、

識別している最中にも「2」「3」と画像が溜まる。

「1」の識別が終わった時には画像は「4」になっているので次は「4」を識別する。

 

「2」「3」にはAIが通されていないが、ハイスピードで画像が切り替わっているので

「2」「3」のフレームには「1」で認識した顔の枠が引き継がれる。

「1」の使いまわしって感じ。

 

【1】「2」「3」【4】「5」「6」【7】「8」「9」【10】「11」「12」

 

【】…AIを直接通されたフレーム

「」…処理時間の都合上AIを通されなかったフレーム

 

➀【1】以前の【】は5回連続して顔を認識していたとする。

(顔はそこにある前提)

②【4】では顔認識が外れ、枠も外れた

(なんらかの問題で【4】だけ認識されなかった)

③【7】以降5回連続して顔を認識していた

④【4】の画像を保存

⑤「2,3,5,6」とは区別するために「AIを通したかbool」を組み込む

 

●直前直後にAIを通した画像は認識したけどそこだけ認識が外れてしまったbool

●AI認識を直接したかbool

 

 

 

----組み込み方----

➀リングバッファ100

Mat[100]  mat = new Mat[100]

(start で 「i=1」と宣言)

mat[i]=Webカメラから拾ってきたMAT

if(bool 顔あるか && bool AI通ってるか)

 mat[i]をどこかにpngとして画像保存。(ディレクトリ指定必要か)

 

Classを使った方がいいといわれたがどう組み込んだらいいかわからない。

(MATのメモリ指定とbool同じ場所なんだからclassでやったほうがいい?)