您好,登錄后才能下訂單哦!
小編給大家分享一下C++ OpenCV之級聯分類器如何實現人臉檢測功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
前言
使用機器學習的方法進行人臉檢測的第一步需要訓練人臉分類器,這是一個耗時耗力的過程,需要收集大量的正負樣本,并且樣本質量的好壞對結果影響巨大,如果樣本沒有處理好,再優秀的機器學習分類算法都是零。OpenCV安裝包里自帶有已經訓練好的人臉分類器“haarcascade_frontalface_alt.xml”,位置在“XX\opencv\sources\data\haarcascades”里,我們可以直接拿來使用,檢測效果還可以接受。這個文件夾下還有其他一些分類器,像左右眼、上身、笑臉檢測等等。
檢測的基本原理
我們先來看一下分類器
就是我們從中間的虛線來進行分類,分開后可以看到,上半部分紅的多,所以出現了藍色即為錯誤分類,下半部分藍色多,出現了紅色即為錯誤分類,像圖2中放大的三個點,就是分類里面的錯誤分類。
然后我們換一下分類,又發現下面兩個藍色的也為錯誤分類了。
然后我們再換一下分類,最終通過區分把紅和藍都分別區分開來。
實現過程
代碼演示
我們再新建一個項目名為opencv--facedetection,按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法.
OpenCV里面自帶了訓練好的人臉檢測的數據文件,我們先加載進來
我們先加載訓練文件
然后我們再加載圖像,并轉為灰度圖進行直方圖的均衡化
接下來就是重點,我們通過人臉檢測,并把檢測到的數據畫到原來的圖像上,重新顯示出來
我們來看一下運行結果
可以看到,右邊的圖片上矩形框就是我們已經檢測到的結果。
看完了這篇文章,相信你對“C++ OpenCV之級聯分類器如何實現人臉檢測功能”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。