樹莓派實現人臉打卡機
阿新 • • 發佈:2020-07-13
之前用樹莓派開發一套簡易的視訊監控平臺,正好週日有時間,這次用樹莓派實現了人臉打卡機。
樹莓派相關文章:
1. [樹莓派搭建nexus2.x私服](https://www.cnblogs.com/itqn/p/raspi_nexus2.html)
2. [樹莓派搭建視訊監控平臺](https://www.cnblogs.com/itqn/p/13268916.html)
3. [樹莓派視訊監控平臺實現錄製歸檔](https://www.cnblogs.com/itqn/p/13281792.html)
4. 樹莓派實現人臉打卡機 (本文)
### 1. 功能設計
樹莓派人臉打卡機,主要包括兩個大方向的功能要求:
a. 人臉採集存檔
b. 人臉識別簽到
這兩個功能配合使用就能實現人臉打卡了, 通過人臉採集將人臉資訊預存檔在系統中,簽到的時候,當人靠近攝像頭時實時採集人臉,然後比對現有人臉,如果資訊匹配則認為簽到成功。
下面是簽到的效果:
當人臉簽到成功後,程式介面底部會顯示簽到時間和簽到人的工號。
![raspi-face-sign-in](https://img2020.cnblogs.com/blog/2083963/202007/2083963-20200712184535458-1245940355.png)
### 2. 開發人臉採集模組
人臉採集模組主要的工作就是從攝像頭採集視訊幀,然後交給介面回顯,這裡使用的是JavaCV中的opencv模組。
頻繁採集視訊幀是一個很耗CPU的過程,我在這裡做了一些優化處理,即:當檢測到沒有人臉的時候,程式休眠更長的時間(1秒),而當檢測到人臉時,採集間隔調整為180毫秒。
下面是完整的程式碼:
```java
/**
* @author itqn
*/
public class FaceCapture implements Runnable {
private VideoCapture capture;
private CascadeClassifier classifier;
private OpenCVFrameConverter.ToMat matConvert;
private JavaFXFrameConverter converter;
private Bi