Exemplo n.º 1
0
        IEnumerator DetectorFrames()
        {
            if (_frameToMatHelper.IsPlaying() && _frameToMatHelper.DidUpdateThisFrame())
            {
                while (true)
                {
                    yield return(_waitForSeconds);

                    Mat rgbaMat = _frameToMatHelper.GetMat();

                    Cv2.CvtColor(rgbaMat, _grayMat, ColorConversionCodes.RGBA2GRAY);

                    bool patternFound = false;
                    for (int i = 0; i < _patternsArray.Length; i++)
                    {
                        patternFound = _patternDetector.FindPattern(_grayMat, _patternsArray[i]);
                        if (patternFound)
                        {
                            _targetPatternTex2d     = Utils.MatToTexture2D(_patternsArray[i].frame);
                            PatternRawImage.texture = _targetPatternTex2d;
                            PatternRawImage.rectTransform.localScale = new Vector3(1.0f, (float)_patternsArray[i].frame.Height / (float)_patternsArray[i].frame.Width, 1.0f);
                        }
                        yield return(0);
                    }
                    _previewTex2d = Utils.MatToTexture2D(rgbaMat);
                    _frameRenderer.material.mainTexture = _previewTex2d;
                }
            }
        }
        // Update is called once per frame
        void Update()
        {
            if (_frameToMatHelper.IsPlaying() && _frameToMatHelper.DidUpdateThisFrame())
            {
                OpenCvSharp.Mat rgbaMat = _frameToMatHelper.GetMat();

                OpenCvSharp.Cv2.CvtColor(rgbaMat, _rgbMat, OpenCvSharp.ColorConversionCodes.RGBA2RGB);
                _keypoints = _detector.Detect(rgbaMat);

                OpenCvSharp.Cv2.DrawKeypoints(_rgbMat, _keypoints, rgbaMat, OpenCvSharp.Scalar.All(-1), OpenCvSharp.DrawMatchesFlags.NotDrawSinglePoints);

                OpenCvSharp.Cv2.Rectangle(rgbaMat, _patternRect.TopLeft, _patternRect.BottomRight, new OpenCvSharp.Scalar(255, 0, 0, 255), 5);
                _previewTex2d = Utils.MatToTexture2D(rgbaMat);
                _frameRendere.material.mainTexture = _previewTex2d;
            }
        }