Beispiel #1
0
    // Use this for initialization
    void Start()
    {
        _capDev       = new UnityOpenCVVideoCaptureAPI();
        _faceDetector = new UnityOpenCVFaceDetectorAPI(Application.dataPath + DetectorParameters.cascadesPath, DetectorParameters.resizeFactor, DetectorParameters.scaler, DetectorParameters.minNeighbors,
                                                       DetectorParameters.minSize, DetectorParameters.maxSize);
        _faceDetector.BindCamera(_capDev);
        _image     = new GstImageInfo();
        _faceImage = new GstImageInfo();


        BlitImage = new Texture2D(1, 1);
        FaceImage = new Texture2D(1, 1);
        _image.Create(1, 1, GstImageInfo.EPixelFormat.EPixel_R8G8B8);
        _faceImage.Create(1, 1, GstImageInfo.EPixelFormat.EPixel_R8G8B8);


        _imageGrabber = new Thread(new ThreadStart(ImageGrabberThread));

        SettingsHolder.Instance.AddDependencyNode(this);


        if (Debugger != null)
        {
            Debugger.AddDebugElement(this);
        }
    }
Beispiel #2
0
    void _threadProcess()
    {
        if (!_inited)
        {
            _inited = true;
            if (_config.EnableRecognizer)
            {
                _recognizer = new UnityOpenCVPersonRecognizerAPI(_config.trainingPath);
            }
            _detector = new UnityOpenCVFaceDetectorAPI(_config.cascadePath, _config.scaler, _config.minNeighbors, _config.minSize, _config.maxSize);
        }
        while (!_isDone)
        {
            _signalEvent.WaitOne();
            _signalEvent.Reset();
            if (_newImage)
            {
                _detecting = true;
                try{
                    _detector.BindImage(_img);
                    _faces = _detector.DetectFaces();
                    TriggerFaceDetected(_detector.DetectedFaces);
                    Debug.Log("Face Detected : " + _faces.Count.ToString());

                    if (_recognizer != null)
                    {
                        _recognizedFaces.Clear();
                        for (int i = 0; i < _detector.DetectedFaces.Count; ++i)
                        {
                            _recognizer.BindImage(_img);
                            RecognizedFace f = new RecognizedFace();
                            f.ID   = _recognizer.RecognizeFace(_detector.DetectedFaces[i], ref f.distance);
                            f.rect = _detector.DetectedFaces[i];
                            _recognizedFaces.Add(f);
                            //if(conf<60)
                            Debug.Log("Face Detected with label: " + f.ID.ToString() + " with distance:" + f.distance.ToString());
                        }
                        TriggerFaceRecognized(_recognizedFaces);
                    }
                }catch (Exception) {
                }
                _detecting = false;
                _newImage  = false;
            }
        }
    }