Pracuję nad projektem, w którym powinienem zaprojektować aplikację, która może wykryć wszystkie twarze osób przechodzących przez ... Mam bardzo dużą bazę danych składającą się z kilku znanych osób ... Użyłem EigenObjectRecognizer do rozpoznania ramka obrazu przechwytywana przez kamerę internetową ... Problem tkwi jednak w tym, że niektóre osoby błędnie rozpoznają ... Więc jeśli uzyskasz wartość zaufania tego dopasowania twarzy ... Wtedy mogę napisać pętlę warunkową, aby była większa niż 75%, a następnie wykrywa go inaczej. Ponadto wiem, że rozpoznawanie oparte na PCA jest podstawą, zdecydowanie przejdę do innych nowych algorytmów. Ale z uwagi na ostateczny termin projektu, powinienem go szybko przesłać ... .Tak, proszę mi powiedzieć, jak uzyskać wartość zaufania tego rozpoznawania twarzy EigenObjectRecognizer ....Jak zdobyć wartość Zaufania w rozpoznawaniu twarzy za pomocą EMGU CV?
Odpowiedz
Nie ma dokładnej wartości Jest to zmienna skala, którą można z grubsza zinterpretować jako taką, która jest odległością Eigen.
Wartość, która klasyfikuje się jako dobre dopasowanie, zmienia się w zależności od ilości posiadanych danych i parametrów treningu, dlatego konieczne będzie przetestowanie wartości z różnymi ścianami w celu obliczenia progu.
Będziesz musiał dodać funkcję do klasy Eigen, aby uzyskać tę wartość. Najpierw zastąpimy EigenObjectRecognizer, którego używamy. To jest naprawdę proste loacte, plik EigenObjectRecognizer.cs, znajduje się w katalogu instalacyjnym \ EMGU \ Emgu.CV lub gdziekolwiek wyodrębniłeś pliki, które powinieneś być w stanie splotować, ponieważ są w tym samym folderze co folder bin ze wszystkimi .dll, których używasz.
Dodaj plik do projektu klikając prawym przyciskiem myszy nazwę projektu w eksploratorze rozwiązań w studiu wizualnym i wybierając Dodaj> Istniejący element ... Przejdź do pliku i dodaj go. Twój projekt automatycznie skorzysta z tego, a nie z pliku EMGU.CV.dll w twoich referencjach.
Otwórz EigenObjectRecognizer.cs teraz w projekcie, nie martw się, że jest to kopia oryginału, więc wszelkie wprowadzone zmiany nie wpłyną na oryginalne źródło. Aby zacząć od ułatwienia, przytrzymując klawisz Ctrl, naciskając klawisz m, a następnie klawisz o, zwinie wszystkie pola metod.
Na początek musimy nadpisać przestrzeń nazw nazywaną moją Emgu.Custom.
Teraz w górnej części kodu dodać następujące zmienne pod innymi
private float eigenDistance;
Dodaj następującą metodę do klasy,
/// <summary>
/// Get the calculated Eignen Distance for the last proceessed frame
/// </summary>
public float GetEignenDistance
{
get { return eigenDistance; }
}
można umieszczać w dowolnym miejscu, ale oczywiście w klasie i poza metodą, teraz ważny kawałek. Zrobiliśmy eigenDistance globalnie, ale jest prywatnie tworzone, gdy nazywamy metodę .Recognize (Image image).
Znajdź tę metodę w EigenObjectRecognizer.cs i zmienić
float eigenDistance;
do
eigenDistance = -1;
można usunąć pływak eigenDistance; ale chciałbym upewnić się, że jest nadpisany wartością, którą mogę zaobserwować dla błędu, ponieważ zawsze powinno być pozytywne, jeśli rozpoznanie zostało poprawnie zastosowane.Można zauważyć, że następujący fragment kodu zawiera:
FindMostSimilarObject(image, out index, out eigenDistance, out label);
- Indeks
- eigenDistance
- etykieta
Czy wszystkie wyjścia dostępne do użytku z odrobiną dodatkowego kodowania.
Nie mamy potrzeby, aby podkreślić naszą zmienną Rozpoznawania EIGEN do napisać:
Emgu.Custom.EigenObjectRecognizer recognizer;
Możemy teraz uzyskania EigenDistance z tego wywołania funkcji:
float EigenDistance = recognizer.GetEignenDistance;
Nadzieja ta czyści rzeczy,
Pozdrowienia,
Chris
- 1. Wypełnij otwory w emgu cv
- 2. Emgu CV nie wykrywa CUDA
- 3. Obraz dopasowania EMGU CV SURF
- 4. Jak zainstalować i używać Emgu CV w języku C#?
- 5. Wykres Voronoi z zestawu wielokątów w Emgu CV (lub OpenCV)
- 6. Jak osiągnąć dobrą ostrość z twain/emgu/open cv?
- 7. Jak wyciąć pod-część obrazu za pomocą Emgu CV (lub OpenCV)?
- 8. Emgu CV uzyskać wszystkie ramki z pliku wideo
- 9. jaka jest funkcja znalezienia progu otsu w emgu cv?
- 10. Jak zdobyć głowicy wartość tytuł za pomocą jQuery
- 11. twarzy Punkty fabularne wykrycie za pomocą OpenCV
- 12. Wykrywanie funkcji twarzy za pomocą OpenCV Android
- 13. Jak zdobyć element dzwoniącego za pomocą JavaScript?
- 14. Emgu (OpenCV dla C#) - budowanie mapy różnicowej za pomocą cvStereoRectify
- 15. Jak zdobyć klucz publiczny za pomocą PyOpenSSL?
- 16. Jak zdobyć zakres dat za pomocą moment.js
- 17. Wykrywanie rodzaju twarzy
- 18. Czy istnieje sposób na pomiar poziomu zaufania podczas korzystania z wykrywania twarzy haar przy użyciu OpenCV?
- 19. Jak ustawić piksel na wartość w obiekcie cv :: Mat?
- 20. Nie można załadować biblioteki DLL "opencv_core242": Nie można znaleźć określonego modułu. Emgu CV
- 21. Efektywne mnożenie kwaternionów C++ za pomocą cv :: Mat
- 22. Jak przenieść punkty twarzy w opencv/zniekształcenie twarzy
- 23. Jak korzystać z cv :: BackgroundSubtractorMOG w OpenCV?
- 24. Ustawienie Poziom zaufania w web.config
- 25. Rozpoznawanie twarzy do klasyfikowania zdjęć cyfrowych?
- 26. Porównywanie dwóch twarzy w Androidzie
- 27. Jak zdobyć obiekt docelowy obiektu docelowego za pomocą jQuery?
- 28. Jak zdobyć n percentyl za pomocą podsumowanie R?
- 29. Jak uzyskać wartość zmiennoprzecinkową za pomocą SqlDataReader?
- 30. Jak zakodować wartość za pomocą serializacji jquery?
Sir, w moim rozpoznawaczu kodów jest nazwa odwołania do EigenObjectRecognizer ... Próbowałem użyć rozpoznawania.Get_Eigen_Results. Ale nie mogłem znaleźć żadnego członka o nazwie "Get_Eigen_Results". Czy brakuje mi tutaj odniesienia? –
Witam, przepraszam, Surya to funkcja, którą dodałem do klasy Eigen. Zaktualizuję odpowiednio odpowiedź. – Chris
Cześć, myślisz, że to może zadziałać, jeśli chciałbym porównać obrazy z tą samą osobą - sprawdź odległość od bazy danych jeden, niż z innymi iw końcu porównać te odległości? Lub w jaki sposób porównać 2 zdjęcia osoby, która nie jest w bazie danych? –