<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于QT設計的人臉考勤打卡簽到系統

DS小龍哥-嵌入式技術 ? 2023-07-10 16:17 ? 次閱讀

1. 項目介紹

近幾年,生物特征識別技術獲得快速發展。人臉作為一種生物特征,具有很強的自身穩定性和個體差異性,是進行身份驗證的最理想依據,主要方法包括步態識別、虹膜識別、皮膚芯片、臉像識別、多模態(即多生物特征融合)技術等。其中,人臉識別技術因為具有方便、直觀、易于普及等優點尤為受到關注與研究。

文章針對當前常用考勤方式中普遍存在的代簽到、考勤數據整合較慢等問題,利用華為云的人臉識別技術實現了一種基于QT框架設計的在線考勤系統。該系統可大大提高考勤效率,滿足各類場環境景下的考勤需求,具有識別度高、檢測速度快、操作簡單的特點,能夠為用戶提供更多便利幫助。

實現大致流程:

  1. 注冊華為云賬號
  2. 開通華為云的人臉識別服務
  3. 通過API創建人臉庫
  4. 將需要考勤識別的人臉,添加到人臉庫
  5. 考勤時,調用本地攝像頭獲取人臉圖像,與人臉庫里注冊的人臉進行對比,找到考勤人,完成考勤。

核心思路總結:

華為云人臉識別服務支持,人臉庫創建,向人臉庫添加人臉,在人臉庫里搜索匹配的人臉,.......很多功能。當前

考勤系統主要用到這3個功能。

創建人臉庫: 在創建人臉庫的時候,支持創建自定義字段,也就是每個人臉可以加一些自定義的屬性描述,但是不支持中文字符,如果是字符串字段,范圍是0~255長度;

向人臉庫添加人臉: 如果在創建人臉庫的時候,注冊了自定義字段,在添加人臉的時候就可以帶上自定義字段的描述,除了添加自定義字段,也可以添加ID,這個ID關聯數據庫方便考勤的時候進行查找對比。

在人臉庫搜索人臉: 可以取一張本地的圖片與人臉庫里存在的人臉進行匹配,得到相識度,在搜索人臉的時候也可以設置過濾條件,常見的條件就是相識度閥值,低于設置閥值就不返回,也可以設置自定義字段返回,如果注冊人臉的時候添加了自定義屬性,在識別到人臉的時候就可以通過返回的自定義屬性判斷這個人臉是誰。

考勤實現核心思路:

向人臉庫添加人臉的時候,可以指定external_image_id字段,這個是代表圖片外部ID,與當前圖像綁定,這個字段可以存放在本地的數據庫里,在考勤的時候,從當前攝像頭取一幀圖像與華為云人臉庫里的圖像進行對比,找到相識度最高的一張圖片,然后這張圖片的external_image_id字段,然后與數據庫里的external_image_id字段匹配,就找到這個人的詳細信息了(詳細信息是存放到本地數據庫里的),然后就可以實現考勤邏輯了。

軟件最終的效果:

(1)主界面

image-20211221103909085

(2)打開攝像頭

image-20211221104539725

如果視頻里沒有人臉,會有錯誤提示的。

image-20211221104641098

(3)點擊人臉注冊,添加工號自定義屬性

image-20211226124307918

(4)點擊人臉搜索:搜索到之后會把自定義的屬性顯示出來--工號

image-20211226124320572

image-20211226132557419

image-20211226132607167

image-20211226132618369

其他功能都不在演示了,詳細實現看下面章節的代碼流程。

項目源碼下載地址: https://download.csdn.net/download/xiaolong1126626497/71245801

2. 創建人臉庫

2.1 開通人臉識別服務

官網地址: https://console.huaweicloud.com/frs/?region=cn-north-4&locale=zh-cn#/frs/manage/index

如果沒有華為云賬號,打開上面地址時,需要先注冊,如果有賬號登錄之后就可以看到下面的頁面,鼠標移到最右邊,開通對應的服務。

image-20211220102416288

2.2 創建人臉庫

官方幫助文檔地址: https://support.huaweicloud.com/api-face/face_02_0088.html

image-20211220102931041

image-20211220103034937

image-20211220103311203

2.3 AK/SK、ID、域名參數獲取

在使用API訪問接口時,需要填充很多的參數,endpoint,project_id 等等。

關于這些API需要使用的簽名參數介紹在這個頁面里:https://support.huaweicloud.com/devg-apisign/api-sign-provide-start.html

image-20211220103455186

Endpoint 是代表地區與終端節點,即云服務在不同Region有不同的訪問域名。

查看地址: https://developer.huaweicloud.com/endpoint

打開鏈接之后,選擇自己的服務,然后往下翻就可以看到對應服務的地址。

image-20211220115558573

image-20211220115630617

華北-北京四  cn-north-4  face.cn-north-4.myhuaweicloud.com   HTTPS

獲取AK/SK

  1. 打開控制臺頁面
  2. 將鼠標移至用戶名,在下拉列表中單擊“我的憑證”。
  3. 單擊“訪問密鑰”。
  4. 單擊“新增訪問密鑰”,進入“新增訪問密鑰”頁面。
  5. 輸入描述信息,單擊“確定”,下載密鑰,請妥善保管。

image-20211220104004923

image-20211220104041253

在API憑證頁面可以看到項目ID:

image-20211220104734001

image-20211220104205132

image-20211220104224862

image-20211220104309722

2.4 在線調試接口

華為云提供了在調試API接口,非常方便,可以提前驗證功能是否正常。

地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=FRS&api=CreateFaceSet

選擇自己要調試的API,然后填充對應的參考,進行調試即可。

下面的例子是創建人臉庫。

image-20211220115159426

如果同一個人臉庫創建兩次,就會報錯,可以在調試頁面看到錯誤的提示,方便自己寫代碼時進行判斷,處理。

image-20211220115403185

如果不清楚訪問的域名地址是多少,在調試接口頁面是可以直接獲取查看的。

創建人臉庫的時候,還可以指定自定義字段,方便對這張人臉進行打個性化標簽屬性,方便知道這張臉是誰的。

image-20211220233435788

請求頭:
 {
  "User-Agent": "API Explorer",
  "X-Auth-Token": "******",
  "Content-Type": "application/json"
 }
 請求體:
 {
  "external_fields": {
   "face_name": {
    "type": "string"
   },
   "face_phone": {
    "type": "string"
   },
   "face_class": {
    "type": "string"
   }
  },
  "face_set_name": "face3"
 }

2.5 代碼實現

/*
 功能: 創建人臉庫
 */
 void Widget::HuaweiCreatesFaceDatabase(QString face_lib_name)
 {
     //表示創建人臉庫
     function_select=2;
 ?
     QString requestUrl;
     QNetworkRequest request;
 ?
     //設置請求地址
     QUrl url;
 ?
     //人臉注冊的請求地址
     requestUrl = QString("https://face.%1.myhuaweicloud.com/v2/%2/face-sets")
                  .arg(SERVER_ID)
                  .arg(PROJECT_ID);
 ?
     //自己創建的TCP服務器,測試用
     //requestUrl="http://10.0.0.6:8080";
 ?
     //設置數據提交格式
     request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
 ?
     //設置token
     request.setRawHeader("X-Auth-Token",Token);
     //構造請求
     url.setUrl(requestUrl);
 ?
     request.setUrl(url);
 ?
     //添加自定義字段   external_fields這個對象就是自定義字段
     //我這里只是定義了3個字段,可以自己增加
     //添加人臉的時候也需要添加這里設置的自定義字段
     QString post_param=QString("{"
             ""external_fields": {"
              ""face_name": {"
               ""type": "string""
              "},"
              ""face_phone": {"
               ""type": "string""
              "},"
              ""face_class": {"
               ""type": "string""
              "}"
             "},"
             ""face_set_name": "%1""
            "}").arg(face_lib_name);
 ?
     //發送請求
     manager- >post(request, post_param.toUtf8());
 }

3. 如何獲取X-Subject-Token

使用API訪問華為云的所有服務接口,都需要填X-Subject-Token參數,下面介紹步驟:

3.1 創建一個新的IAM帳戶

鼠標懸停在右上角的用戶名稱上,彈出下拉框,選擇統一身份認證。

image-20211220152929854

3.2 選擇創建用戶

image-20211220153051946

image-20211220153226036

image-20211220153255718

image-20211220153311429

3.3 使用調試接口測試獲取oken

調試接口地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=IAM&api=KeystoneCreateUserTokenByPassword

image-20211220153749278

右邊響應頭里的X-Subject-Token就是獲取的token。

image-20211220154523194

3.4 上面的這些賬戶名稱從哪里獲???

image-20211220153950194

image-20211220154123357

3.5 請求地址和數據格式

獲取X-Subject-Token請求的地址: https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens

請求頭數據:

{
  "User-Agent": "API Explorer",
  "X-Auth-Token": "******",
  "Content-Type": "application/json;charset=UTF-8"
 }

請求體數據:

{
   "auth": {
     "identity": {
       "methods": [
         "password"
       ],
       "password": {
         "user": {
           "domain": {  
             "name": "xxxxx"  //這里填當前主賬戶名稱
           },
           "name": "xxxx",  //這個新建的子賬戶名稱
           "password": "xxxxx"    //這個是新建的子賬戶密碼
         }
       }
     },
     "scope": {
       "project": {
         "name": "cn-north-4"
       }
     }
   }
 }

3.5 代碼實現

/*
 功能: 獲取token
 */
 void Widget::GetToken()
 {
     //表示獲取token
     function_select=3;
 ?
     QString requestUrl;
     QNetworkRequest request;
 ?
     //設置請求地址
     QUrl url;
 ?
     //獲取token請求地址
     requestUrl = QString("https://iam.%1.myhuaweicloud.com/v3/auth/tokens")
                  .arg(SERVER_ID);
 ?
     //自己創建的TCP服務器,測試用
     //requestUrl="http://10.0.0.6:8080";
 ?
     //設置數據提交格式
     request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json;charset=UTF-8"));
 ?
     //構造請求
     url.setUrl(requestUrl);
 ?
     request.setUrl(url);
 ?
     QString text =QString("{"auth":{"identity":{"methods":["password"],"password":"
     "{"user":{"domain": {"
     ""name":"%1"},"name": "%2","password": "%3"}}},"
     ""scope":{"project":{"name":"%4"}}}}")
             .arg(MAIN_USER)
             .arg(IAM_USER)
             .arg(IAM_PASSWORD)
             .arg(SERVER_ID);
 ?
     //發送請求
     manager- >post(request, text.toUtf8());
 }

4. 向人臉庫添加人臉

4.1 調試接口

官方地址: https://support.huaweicloud.com/api-face/face_02_0093.html

image-20211220183218596

image-20211220183415166

添加人臉調試接口地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=FRS&api=AddFacesByFile

image-20211220183713964

4.2 請求接口與地址總結

請求地址: https://face.cn-north-4.myhuaweicloud.com/v2/項目ID/face-sets/人臉庫名稱/faces
 請求方式: post
 請求頭:
 {
  "User-Agent": "API Explorer",
  "X-Auth-Token": "******",  //替換成自己的token
  "Content-Type": "application/json"
 }
 請求體:
 {
  "image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAk..........."
 }

4.3 查詢人臉

文檔地址: https://support.huaweicloud.com/api-face/face_02_0094.html

image-20211220223342018

調試地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=FRS&api=ShowFaceSet

image-20211220223528491

4.4 代碼實現: 添加人臉時增加自定義字段

//注冊人臉,添加人臉,添加自定義數據
 //QString name 這個是自定義字段,0~255 字節,只能英文字母和數字
 void Widget::RegFace2(const QImage image,QString face_lib,QString name)
 {
     function_select=0;
 ?
     QString requestUrl;
     QNetworkRequest request;
 ?
     //存放圖片BASE64編碼
     QString imgData;
 ?
     //設置請求地址
     QUrl url;
 ?
     //人臉注冊的請求地址
     requestUrl = QString("https://face.%1.myhuaweicloud.com/v2/%2/face-sets/%3/faces")
             .arg(SERVER_ID)
             .arg(PROJECT_ID)
             .arg(face_lib);
     qDebug()< < "requestUrl:"<

5. 從人臉庫搜索匹配的人臉

5.1 參數介紹

官方文檔地址: https://support.huaweicloud.com/api-face/face_02_0086.html

image-20211221090644392

image-20211221093155305

5.2 調試接口

接口地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=FRS&api=SearchFaceByFile

image-20211221090708217

我這里調試接口里選擇本地指定文件與人臉庫的人臉進行匹配,返回相識度。

image-20211221091619216

返回的結果:

{
  "faces": [
   {
    "face_id": "6ED4NSsS",
    "external_image_id": "FPhviHgr",
    "bounding_box": {
     "width": 197,
     "top_left_x": 201,
     "top_left_y": 80,
     "height": 241
    },
    "similarity": 1
   },
   {
    "face_id": "EpBvdmp5",
    "external_image_id": "ubxcVUpN",
    "bounding_box": {
     "width": 104,
     "top_left_x": 111,
     "top_left_y": 100,
     "height": 123
    },
    "similarity": 0.9802261
   },
   {
    "face_id": "cSKntQmF",
    "external_image_id": "nBoRpVab",
    "bounding_box": {
     "width": 113,
     "top_left_x": 65,
     "top_left_y": 106,
     "height": 127
    },
    "similarity": 0.97810614
   },
   {
    "face_id": "TZGv2cKI",
    "external_image_id": "49y0pLG9",
    "bounding_box": {
     "width": 104,
     "top_left_x": 90,
     "top_left_y": 97,
     "height": 125
    },
    "similarity": 0.9768342
   },
   {
    "face_id": "3p1Ho8Vw",
    "external_image_id": "vpuYDUvU",
    "bounding_box": {
     "width": 108,
     "top_left_x": 100,
     "top_left_y": 108,
     "height": 122
    },
    "similarity": 0.9619592
   },
   {
    "face_id": "nIuMJ1fA",
    "external_image_id": "v8mNyJSY",
    "bounding_box": {
     "width": 102,
     "top_left_x": 58,
     "top_left_y": 141,
     "height": 98
    },
    "similarity": 0.95380914
   },
   {
    "face_id": "IamCTWR9",
    "external_image_id": "KzUyJDxU",
    "bounding_box": {
     "width": 108,
     "top_left_x": 32,
     "top_left_y": 142,
     "height": 97
    },
    "similarity": 0.5663861
   }
  ]
 }

5.3 接口總結

這是總結的bas64編碼的接口,方便編寫代碼進行搜索人臉。

請求地址: https://face.cn-north-4.myhuaweicloud.com/v2/項目ID/face-sets/人臉庫名稱/search
 請求方式: POST
 請求頭:
 {
  "User-Agent": "API Explorer",
  "X-Auth-Token": "******",    自己的token
  "Content-Type": "application/json"
 }
 請求體:
 {
  "image_base64": "..........................................."   圖片BAS64編碼后的數據
 }

5.4 代碼實現

//人臉搜索功能
 // threshold參數表示人臉相似度閾值,低于這個閾值則不返回,取值范圍0~1,一般情況下建議取值0.93,默認為0。
 void Widget::FindFace(const QImage image,QString face_lib,double threshold)
 {
     function_select=1;
     QString requestUrl;
     QNetworkRequest request;
 ?
     //存放圖片BASE64編碼
     QString imgData;
 ?
     //設置請求地址
     QUrl url;
 ?
     //人臉搜索請求地址
     requestUrl = QString("https://face.%1.myhuaweicloud.com/v2/%2/face-sets/%3/search")
             .arg(SERVER_ID)
             .arg(PROJECT_ID)
             .arg(face_lib);
 ?
     //設置數據提交格式
     request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
 ?
     //將圖片進行Base64編碼
     imgData = QString(toBase64(image)); //編碼后的圖片大小不超過2M
     //設置token
     request.setRawHeader("X-Auth-Token",Token);
 ?
     //構造請求
     url.setUrl(requestUrl);
     request.setUrl(url);
 ?
     QString post_param=QString
                ("{"
                  ""image_base64": "%1","
                  ""return_fields":["face_name"],"   //需要返回的自定義字段
                 ""threshold":%2"
                 "}").arg(imgData).arg(threshold);
 ?
 ?
     //發送請求
     manager- >post(request, post_param.toUtf8());
 }

6. 刪除人臉庫

文檔地址: https://support.huaweicloud.com/api-face/face_02_0091.html

調試地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=FRS&api=DeleteFaceSet

image-20211221113900132

總結:

請求接口: https://face.cn-north-4.myhuaweicloud.com/v2/項目ID/face-sets/人臉庫名稱
 ?
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人臉識別
    +關注

    關注

    76

    文章

    3962

    瀏覽量

    80701
  • 考勤系統
    +關注

    關注

    0

    文章

    39

    瀏覽量

    11112
收藏 人收藏

    評論

    相關推薦

    考勤機的發展

    上打印、分析數據的先進管理方式。從根本上杜絕代打卡,無記錄等考勤漏洞?! 《斍白钍⑿械臒o疑是人臉辨認考勤機,智能化的人臉辨認
    發表于 10-16 09:28

    【大聯大友尚安森美半導體感光芯片USB雙目攝像頭模組試用申請】基于AR0230CS的人臉識別校園簽到打卡應用

    項目名稱:基于AR0230CS的人臉識別校園簽到打卡應用試用計劃:申請理由:本人想通過該款感光模組開發一套應用于校園的簽到打卡
    發表于 08-10 18:08

    【HarmonyOS HiSpark AI Camera】智能簽到系統

    項目名稱:智能簽到系統試用計劃:我司正在開發基于人臉識別的打卡機,即智能簽到系統,目前已調研幾家
    發表于 11-19 20:41

    以STC89C52單片機實現的指紋考勤系統設計的相關資料分享

    百度網盤下載地址(1119):點擊下載摘要 在當今社會科技飛速發展的同時,在學校老師還是以點名簽到或者IC卡簽到的方式進行考勤,存在著他人冒充打卡或者點名的弊端。本次設計以STC89C
    發表于 11-10 08:36

    基于QT+OpenCV的人臉識別-米爾iMX8M Plus開發板的項目應用

    本篇測評由電子工程世界的優秀測評者“流行科技”提供。此次測試的開源項目,是基于QT+OpenCV的人臉識別打卡項目。本次體驗使用的是開源的代碼,此代碼本來是運行在WIN下的,為了測試稍微進行了修改
    發表于 05-17 17:43

    人臉考勤系統設計方案

    人臉考勤系統,是將先進的人臉識別技術應用到考勤領域的一個成功產品。
    發表于 08-18 09:38 ?1.2w次閱讀
    <b class='flag-5'>人臉</b><b class='flag-5'>考勤</b><b class='flag-5'>系統</b>設計方案

    “暫停指紋打卡”帶火“非接觸式考勤”,高效益的人臉考勤成焦點

    識別考勤因其非接觸即可完成打卡的優勢,迅速成為了市場關注的焦點。同時,相比刷卡、藍牙、二維碼及傳統人工簽到等方式,人臉識別利用人臉特征的唯一
    的頭像 發表于 02-28 13:03 ?1603次閱讀

    完全免費、即下即用的人臉考勤系統,這波操作太硬核!

    隨著指紋考勤的暫停,能夠實現非接觸式服務的人臉識別考勤逐步成為主流。相比一次只能通行一人、對識別環境要求較高的指紋打卡,可實現多人同時考勤
    的頭像 發表于 04-17 16:26 ?2122次閱讀

    無感考勤給企業帶來全新的考勤體驗!

    ,并比對資料庫里的人臉信息,瞬秒間即可完成上班打卡。什么是無感考勤?無感考勤是基于非配合式的人臉識別的技術基礎之上的一種
    的頭像 發表于 07-14 17:25 ?610次閱讀
    無感<b class='flag-5'>考勤</b>給企業帶來全新的<b class='flag-5'>考勤</b>體驗!

    還在使用指紋打卡?“無感考勤”你值得擁有

    。AI技術的落地應用,智能化考勤系統的上線,讓員工耳目一新,既解決了現有代打卡、排長隊等現狀,又實現了批量打卡、真實打卡的完美效果無感
    的頭像 發表于 08-10 18:11 ?495次閱讀
    還在使用指紋<b class='flag-5'>打卡</b>?“無感<b class='flag-5'>考勤</b>”你值得擁有

    無感考勤,讓打卡簽到更輕松!

    隨著人工智能行業的崛起,考勤方式變得更加多樣化,傳統考勤已經無法滿足企業智能化辦公的需求,人臉識別考勤技術以數據安全、打卡速度快、無法復制、
    的頭像 發表于 08-17 18:06 ?881次閱讀
    無感<b class='flag-5'>考勤</b>,讓<b class='flag-5'>打卡</b><b class='flag-5'>簽到</b>更輕松!

    人臉識別無感考勤攝像頭,開啟智慧化人臉考勤打卡之路

    人臉識別無感考勤攝像頭的出現,打破了傳統的考勤方式,不僅可以提高考勤的準確性和效率,還可以降低人工成本,受到了許多企業的青睞和追捧。作為一種主流的智慧化
    的頭像 發表于 05-11 15:36 ?1154次閱讀
    <b class='flag-5'>人臉</b>識別無感<b class='flag-5'>考勤</b>攝像頭,開啟智慧化<b class='flag-5'>人臉</b><b class='flag-5'>考勤</b><b class='flag-5'>打卡</b>之路

    無感考勤,人臉識別抓拍比對的方式實現考勤簽到

    高大上的無感考勤,也能用人臉識別抓拍比對的方式實現考勤簽到啦!近年來,越來越多的公司、校園、工廠出入口等場景開始安裝投入使用這種無感人臉識別
    的頭像 發表于 05-18 17:25 ?945次閱讀
    無感<b class='flag-5'>考勤</b>,<b class='flag-5'>人臉</b>識別抓拍比對的方式實現<b class='flag-5'>考勤</b><b class='flag-5'>簽到</b>

    人臉識別考勤打卡機上線 智能化刷臉考勤更高效

    隨著現代化信息技術的不斷發展,人臉識別技術在各個領域中得到了廣泛應用。而現在,人臉識別考勤打卡機的上線進一步推動了智能化刷臉考勤的發展,為企
    的頭像 發表于 07-19 16:34 ?884次閱讀
    <b class='flag-5'>人臉</b>識別<b class='flag-5'>考勤</b><b class='flag-5'>打卡</b>機上線 智能化刷臉<b class='flag-5'>考勤</b>更高效

    什么是智慧工地人臉識別考勤系統?

    。 西安智維拓遠人臉識別考勤管理系統通過采用先進的人臉識別信息化考勤設備,實現現場施工人員的出勤電子化智能管理,實現查詢
    的頭像 發表于 07-26 17:59 ?694次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>