簡體   English   中英

openCV的特征臉

[英]eigenfaces with openCV

我剛剛用cv2.createEigenFaceRecognizer識別了一些面孔。 但我想要的是知道輸入面看起來像計算的特征臉多少。 這個想法是你可以重新識別不在數據庫中的人。

編輯:

例如:我在我的模型上訓練了面部A,B和C,然后我看到面部C和D.我希望能夠將面部C與D區分開來。

謝謝!

您可以在cv::FaceRecognizer的文檔中找到有關設置閾值的部分:

它與OpenCV Python Wrapper的工作原理相同,在Python中調用help(cv2.createFaceRecognizer)時可以很容易地看到它:

Help on built-in function createEigenFaceRecognizer in module cv2:

createEigenFaceRecognizer(...)
    createEigenFaceRecognizer([, num_components[, threshold]]) -> retval

因此,在代碼中,您將使用閾值創建模型,我將其設置為100.0 低於此值的任何東西在預測中都會產生-1 ,這意味着這個面孔是unknown

# Create the Eigenfaces model. We are going to use the default
# parameters for this simple example, please read the documentation
# for thresholding:
model = cv2.createEigenFaceRecognizer(threshold=100.0)

如演示中所示,您可以通過以下方式獲得預測和相關置信度(這是與訓練數據集中最近鄰居的距離):

[predicted_label, predicted_confidence] = model.predict(image)

因此,如果您在主題ABC上訓練您的模型並且您正在使用閾值,那么D的預測應該產生-1 ,而應該識別ABC 鑒於事實,您正在使用閾值。

至於迭代地添加新面部而不重新估計整個模型。 這對於特征臉或Fisherfaces方法是不可能的。 您總是需要為這兩種算法調用FaceRecognizer::train來學習模型。 可以使用cv2.createLBPHFaceRecognizer創建的局部二進制模式直方圖(LBPH)模型支持更新模型,而無需重新計算其他訓練樣本。 請參閱以下API文檔:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM