人臉識別是一種高安全性的生物識別技術,在安防、身份驗證等領域被廣泛應用。
本文在【EsDA應用】5分鐘快速實現攝像頭圖像采集 的基礎上,使用M6G2C核心板,簡單介紹如何基于EsDA設計的face_detection人臉檢測功能節點,快速實現人臉檢測識別。
??前期準備
若是剛開始接觸EsDA,可先閱讀EsDA其他系列文章,從零開始搭建環境和掌握基本開發流程,已有基礎的可以跳過:1. 硬件準備
1.1 準備一個攝像頭,這里我們以OV7725攝像頭為例,搭配轉接板使用。1.2 準備一塊LCD顯示屏。1.3 準備一張SD卡,用于存放人臉模型。1.4 準備一塊M6G2C核心板和EPC-6G2C-L評估板,并按照下圖所示連接好硬件。其中,eth0網口用于下載流圖,并連接LCD顯示屏接口、電源,以及將OV7725攝像頭通過轉接板連接到開發板背面的CSI接口上。
2. 其它準備
將人臉檢測相關的模型文件存放到SD卡中。
??節點介紹
這里我們需要使用到攝像頭、圖像格式轉換以及人臉檢測相關的AWFlow節點,包括在【EsDA應用】5分鐘快速實現攝像頭圖像采集 中介紹的camera_video節點、camera配置節點、lcd_display節點,以及本文介紹的用于圖像數據格式轉換的image_format_convert節點和人臉檢測節點face_detection。1. image_format_convert節點
圖像格式轉換節點,用于將攝像頭輸出的圖像轉換為人臉檢測節點支持的RGB888格式。1.1屬性
-
輸入圖像格式:待轉換圖像的格式,一般是攝像頭輸出的原始數據格式;
-
輸入圖像寬度:待轉換圖像的寬度;
-
輸入圖像高度:待轉換圖像的高度;
-
輸出圖像格式:轉換后的圖像的格式,必須指定為RGB888;
-
輸出圖像寬度:轉換后的圖像的寬度;
-
輸出圖像高度:轉換后的圖像的高度。
1.2輸入
- image:需要進行轉換的原始圖像的地址,一般由camera_video節點提供輸入;
1.3輸出
- image:指向轉換完成后的目標格式圖像數據的指針,一般由后級節點接收并處理;
- format:轉換后的圖像的格式;
- width:轉換后的圖像的寬度;
-
height:轉換后的圖像的高度。
2.face_detection節點
face_detection是人臉檢測節點,該節點對輸入的圖像數據進行人臉檢測處理,當檢測到圖像中存在人臉時,截取圖像中的人臉數據并輸出。后級節點可以使用這個圖像數據進行特征值提取、比對等操作。
2.1屬性
-
活體檢測:是否進行活體檢測;
-
模糊檢測:是否進行模糊檢測;
-
人臉矯正:是否進行人臉整理矯正;
-
模型和參數路徑:檢測模型和參數文件路徑;
-
人臉圖像主題:需要進行人臉檢測的圖像的主題,此節點只對與此屬性匹配的輸入圖像進行檢測。
2.2輸入
-
image:輸入圖像數據的緩沖區指針,必須是RGB888格式,可以由image_format_convert轉換后提供輸入;
-
width:輸入圖像的寬度;
-
height:輸入圖像的高度;
- topic:輸入圖像的主題。
2.3輸出
-
image:從輸入圖像中截取的人臉圖像緩沖區;
-
coord_x1:人臉的左上角橫坐標,與后面三個坐標共同決定坐標系上的兩個點,這兩個點可以確定圖像中的人臉位置;
-
coord_y1:左上角縱坐標;
-
coord_x2:右下角橫坐標;
-
coord_y2:右下角縱坐標。
??業務處理
本應用主要實現M6G2C開發板采集攝像頭圖像,并在LCD顯示屏上進行顯示。同時,將攝像頭輸出的原始數據進行格式轉換后,輸入到face_detection節點中進行人臉檢測。具體實現如下:1. 添加節點并連線首先我們需要添加一個camera_video節點用于采集圖像,并輸出到lcd_display節點中顯示。然后,將camera_video節點輸出的RGB565原始圖像在image_format_convert節點中轉換為RGB888格式,接下來將轉換后的圖像輸入到face_detection中進行人臉檢測,并將檢測的結果輸入到lcd_display節點中。另外,增加兩個fscript節點,用于指定圖像主題和打印坐標點信息。2. 配置節點2.1配置camera_video節點雙擊camera_video節點,并在配置項中選擇添加一個新的camera節點。
在camera配置節點中,根據所使用的攝像頭,分別設置設備名、輸出圖像的數據格式和圖像寬度、高度。
然后更新配置,在camera_video節點的配置項中,選擇上一步新增的camera配置節點即可。
2.2配置image_format_convert使用image_format_convert節點目的是將圖像格式轉換為RGB888,因此,根據圖像的信息進行設置即可。如果攝像頭輸出的原始數據即為RGB888,那么這一步可以省略。
2.3face_detection節點
使用人臉檢測節點需要將相關的模型文件存放到文件系統中,并在face_detection節點中指定模型存放的路徑,這里我們存放到SD卡中,并指定路徑。人臉圖像主題屬性用于對輸入的圖像進行過濾,這里我們設置為攝像頭輸出的圖像的主題即可。2.4fscript
流圖中標識為“1”的fscript節點主要是為圖像指定一個主題,我們將其設置為face,和face_detection節點中的主題一致。
msg.topic = "face"
另一個節點用于打印人臉檢測結果的坐標點信息,方便我們對結果進行驗證。其內容如下:
print("(x1, y1)#: (" + msg.coord_x1 + ", " + msg.coord_y1 + ")")
print("(x2, y2)#: (" + msg.coord_x2 + ", " + msg.coord_y2 + ")")
2.5lcd_display節點
lcd_display節點用于顯示圖像,不需要我們進行配置。它會實時顯示camera_video節點輸出的圖像,并且在檢測到圖像中存在人臉后,根據face_detection節點輸入的坐標,在圖像中將人臉框選顯示出來。3. 下載驗證因為M6G2C開發板是通過網口去下載流圖,所以打開AWFlow Designer后需要配置目標板IP和端口號。然后點擊下載運行即可。
流圖下載完成后,通過LCD可以看到,我們已經成功從攝像頭獲取圖像,并且成功在顯示屏上顯示。
當攝像頭采集的圖像中含有人臉時,face_detection節點可以正常檢測到人臉并且輸出準確的坐標點。
技術交流群長按識別如下二維碼可加入“EsDA嵌入式系統設計自動化交流群”,與志同道合的朋友交流,并有專業技術人員為您答疑解惑,如有問題可以咨詢小致微信:zlgmcu-888。
-
致遠電子
+關注
關注
13文章
405瀏覽量
31274
原文標題:【EsDA應用】5分鐘快速實現圖像人臉檢測
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論