close

如果有一台會自動判斷你是誰的打卡系統, 是不是比一般打卡系統方便呢?

https://www.youtube.com/watch?v=q9Ci9cUbv4w <= 人生有限公司

 

藉著這次 CADTC 的 人臉辨識專題進行,

實作的打卡系統使用OPENCV的 人臉辨識

系統架構及軟體架構

 

流程:

先讓 TARGET 的 WIFI UP,  與AP進行WIFI 連結

在面板上按下登入或登出的按鈕, 使用人臉辨識後, 辨識出是誰要使用打卡系統

傳送登入或登出的文字字串過去利用WIFI 傳送到PC端,在PC端儲存, 同時擷取第一張有辨識出的照片並傳送

此時擷取系統時間及登入登出字串並且把兩者印在檔名

(謎之聲:如果有人拿同事的照片來打卡呢?)

 

軟體部份:

在target 面板上移植入touch panel 的驅動程式, 並用兩個process,

一個偵測面板是否有touch,另一個持續偵測圖片並且傳送偵測到的第一張

傳送檔案使用老師介紹的 使用 socket 的檔案寫入跟寫出來實作 

即File_Copying_Using_Socket_server(client).c 

Server 端(PC) 必須先開啟, 然後Client端每次要傳送時就連結上

傳送完再斷開連結

OpenCV detect 和 training的部份放在另外一篇

 

Limitation: 

1. 最關鍵的人臉辨識並沒有實際執行,目前只能做到人臉偵測的階段 QQ

2. 目前wifi傳送是使用固定IP(寫在FC.c裏面), 沒有尋找特定裝置

3. 每次執行FCEXE後 經過1~2分鐘就會出現insufficient memory的問題

可能是因為儲存的圖片佔用記憶體沒有release的緣故

workaround : 在rcS 裏面寫一個while loop 過一段時間就做重啟的動作

4. 偵測人臉並秀在螢幕上會有明顯的延遲, 可能是因為辨識的過程或是秀在螢幕上的程式

老師有提到可以用多process(thread?) 前後圖的概念來加速, 若前圖在辨識的過程中, 後圖已經開始擷取

另外在touch 和 detect 也可以使用multi-thread 的概念實作, 就可以共用變數, 也可能比較快

以及在執行Client 端copy的動作可以用exe 的方式而不用 system的方式, 不用按時序跑到底, 或是用library的型式即可

這樣也不會有code 不同編譯器會有error的情況

 

Implementation Problem:

1. 編譯MPlayer時
./configure 後會有 undefined function "clock_gettime" google 後 發現是make時少了 -lrt
在config.mak  裡 -lncurses -l....之前加上 -lrt
還是一樣?
Ans: 因為-lrt  不能放在最前面編譯會錯誤, 加在Extra library 的最後面,然後使用./configure 
再 make即可

2. Insert Wifi module時使用 depmod或 modprobe

會出現error : depmod: chdir(3.5.0-FriendlyARM): No such file or directory

只有使用insmod 並指定資料夾才能用

原來是因為kernel 是按照3.5.0-FriendlyARM的版本去建立的
但是modprobe或depmod 在/lib/module/裏面找不到 3.5.0-FriendlyARM資料夾
才會fail, 創建資料夾後就可以了

3. 在使用 File Server Receive 的時候, 如果想要儲存下來的檔案可以直接被使用者開啟

而不用再多用一個chmod 來修改權限, 就必須指定write的模式 #define MODES S_IRUSR|S_IWUSR

編譯時就必須有定義這個S_IRUSR|S_IWUSR, 程式中是用到 avilib.c 來做定義

4. target 無法使用ramdisk開機, 可能是因為 bootcmd中只開啟Kernel的緣故

第一次設定可以, 但之後就無法再開機, 這部份需要再請教老師

 

 

 

 

arrow
arrow
    全站熱搜

    紅線 發表在 痞客邦 留言(0) 人氣()