我正试图用Open cv检测视频帧中的脸部。我找到了不同的算法,如" haarcascade_frontalface_alt.xml"," haarcascade_frontalface_alt2.xml"," haarcascade_frontalface_default.xml"等等,一个接一个地试了一下。但这些都无法取得好成绩。 因为当时在特定框架中没有面部时它也给我矩形,而当我使用相同的框架来检测具有MS认知面部api的面部时,它给出了正确的结果。 但我需要使用Open CV从帧中检测面部,然后传递给MS认知服务以从api获取面部属性。我这样做了:
private readonly OpenCvSharp.CascadeClassifier _localFaceDetector = new OpenCvSharp.CascadeClassifier(Path.Combine(Environment.CurrentDirectory, @"Data/haarcascade_frontalface_alt2.xml"));
var detectedFace = _localFaceDetector.DetectMultiScale(frame.Image); // Detect face by open cv
if (detectedFace.Count() <= 0)
return new LiveCameraResult { Faces = null };
**// Error:(detectedFace) It return rectangle of any objects rather than face**
// Encode image.
var jpgImage = frame.Image.ToMemoryStream(".jpg", s_jpegParams);
// Submit image to API.
var faces = await _faceAnalysis.GetFacesDetection(jpgImage);
if (faces.Faces.Count() > 0)
{
/// Detect face by MS cognitive service
}