앉아있는 프래그래머

C# OpenCv 템블릿 매칭(Template Matching) 본문

프로그래밍/C# OpenCv

C# OpenCv 템블릿 매칭(Template Matching)

맛있는 단무지! 2018. 7. 19. 12:30


템블릿 매칭 -> 영상이나 이미지에서 템플릿과 일치하는 오브젝트를 검출.


 IplImage match;
        
        public IplImage Templit(IplImage src, IplImage temp)
        {
            match = src;

            //src 이미지 or 영상의 부분을 match라는 메모리에 할당
            IplImage templit = temp;

            //찾을 temp 이미지를 templit에 메모리 할당
            IplImage tm = new IplImage(new CvSize(match.Size.Width - templit.Size.Width + 1, match.Size.Height -templit.Size.Height + 1), BitDepth.F32, 1);
           //tm은 비교 결과로 사용합니다. 이미지 크기는 항상 W-w+1 x H-h+1로 고정적으로 사용


            CvPoint minloc, maxloc;
            Double minval, maxval;

            //minloc은 검출된 위치의 최소 지점을 의미합니다.

        //maxloc은 검출된 위치의 최대 지점을 의미합니다.

        //minval은 검출된 위치의 최소 포인터를 의미합니다.

        //maxval은 검출된 위치의 최대 포인터를 의미합니다.


            Cv.MatchTemplate(match, templit, tm, MatchTemplateMethod.SqDiffNormed);
            //Cv.MatchTemplate()을 이용하여 템플릿 매칭을 실행합니다. Cv.MatchTemplate(매칭 이미지,템플릿 이미지 , 비교 결과 이미지, 연산방법)을 의미
            Cv.MinMaxLoc(tm, out minval, out maxval, out minloc, out maxloc);
        //Cv.MinMaxLoc()를 이용하여 비교 결과이미지에서 지점과 포인터를 검출합니다. Cv.MinMaxLoc(최소 지점, 최대 지점, 최소 포인터, 최대 포인터)를 의미
            Cv.DrawRect(match, new CvRect(minloc.X, minloc.Y, templit.Width, templit.Height), CvColor.Red, 3);
        //match 이미지에 최소 지점에서 템플릿 이미지 크기로 설정하여 템플릿 매칭 결과를 표시


            return match;







개인적인 공부로 하는거라 요약된 점이 많습니다.


혹시나 더 많은 정보를 원하시면 아래 주소로 들어가보시는걸 추천 드립니다 ^^



https://076923.github.io/posts/#c#-opencv

'프로그래밍 > C# OpenCv' 카테고리의 다른 글

C# OpenCv 결과물  (0) 2018.07.19
C# OpenCv BLOB 라벨링(Labeling)  (1) 2018.07.19
C# OpenCv 흐림화(Blur)  (0) 2018.07.19
C# OpenCv 영상 이진화  (0) 2018.07.19
C# OpenCv 영상 출력 - 캡처 + 녹화 추가  (0) 2018.07.19
Comments