什麼是OpenCV模塊
OpenCV是一款跨平臺的視覺庫,可以支持的作業系統有Linux、Windows和Mac OS作業系統,並且還提供了多種語言的接口,比如Python,java,MATLAB等常用語言。
本文將基於OpenCV模塊,在windows作業系統上,利用python語言,進行人臉識別技術的研究。
當然OpenCV的應用領域很廣,除了人臉識別之外,它還支持圖像分割、動作識別、視頻處理等技術。
首先看一下實現的效果:
OpenCV模塊的下載與安裝
OpenCV模塊下載安裝很簡單。找到模塊:
其中,OpenCV模塊有很多種類,選擇OpenCV+Python+contrib模塊,其中c37表示Python3.7版本,win_amd64表示windows64位作業系統。
安裝藉助pip命令:pip install+文件路徑+文件名,比如:
我的電腦已經安裝了,所以顯示已經存在該模塊。
代碼分析
下面我們對代碼進行分析,代碼如圖所示:
一共不超過15行,當然這是建立在別人已有的數據上做的,如果自己寫的話,不會這麼簡單,我們這只是調用了別人的接口,而這個接口是開源的,共享的。
代碼第1行導入opencv模塊。代碼的第3行(以上圖為準,空行也算一行),導入別人已經訓練好的臉部識別資料庫。這裡用到的數據是在github上開源的已經訓練好的分類器,如圖所示:
需要將對應的數據文件(.xml文件)下載到指定目錄(代碼中的示例,展示的是與.py文件同一目錄下)。第4行的函數cv2.VideoCapture(0)表示調用相機。第6行是讀取攝像機中的影像。其中frame是讀取的每一幀圖像。第7行表示將彩色圖像轉變為灰度圖像。第8行是對灰度圖像中的人臉進行識別定位,返回值為坐標信息。第10行畫出矩形框。第11行展示出圖像。第12行表示按鍵盤上的「q」鍵退出while true循環。14行和15行釋放攝像機,關閉窗口。
其實代碼最核心的一句就是第8行,對人臉進行識別定位,但是這一步,我們通過直接調用別人已經訓練好的資料庫,一步完成了。
效果圖在前文已經給出。下面我們再給出一幅圖片多個人臉識別的效果圖。
其中,代碼多出的最後一行,是為了避免圖片一閃而過。其他的代碼類似上一個案例。
眼睛的識別定位
先看一下效果圖:
素材圖片來源於百度。
看一下代碼:
可以看到這是我們用到的訓練數據為'haarcascade_eye.xml',從而實現對眼睛的識別定位。
總結
本文結合OpenCV模塊,利用python語言,在windows64平臺下完成對人臉識別定位技術的介紹。希望對你的學習有所幫助,謝謝!