앉아있는 프래그래머

C# OpenCv BLOB 라벨링(Labeling) 본문

프로그래밍/C# OpenCv

C# OpenCv BLOB 라벨링(Labeling)

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

BLOB 라벨링 ->영상이나 이미지에서 인접한 화소들을 묶어 하나의 객체로 판단하는 방식입니다. 즉, 인접한(연결된) 화소끼리 같은 번호를 부여합니다. 여러 물체를 구분하기 위해서 사용


using OpenCvSharp.Blob; //선언


  IplImage blob;

        public IplImage BlobImage(IplImage src)
        {
            blob = new IplImage(src.Size, BitDepth.U8, 3);
            bin = this.Binary(src);

            //bin는 라벨링에 사용될 이미지입니다. 이 이미지를 통하여 라벨링을 진행합니다. 라벨링은 이진화 이미지를 사용

            CvBlobs blobs = new CvBlobs();
            blobs.Label(bin);

            //CvBlobs blobs = new CvBlobs();을 이용하여 라벨링을 하기 위해 생성자를 만듭니다. blobs.Label(bin);를 통하여 라벨링을 진행합니다. 이진화 이미지

            blobs.RenderBlobs(src, blob);

            //blobs.RenderBlobs(원본, 결과);를 통하여 라벨링 결과를 확인

            foreach (KeyValuePair<int, CvBlob> item in blobs)
            {
                CvBlob b = item.Value;

                blob.PutText(Convert.ToString(b.Label), b.Centroid, new CvFont(FontFace.HersheyComplex, 1, 1), CvColor.Red);
            }

           //foreach문을 이용하여 라벨링 정보를 확인할 수 있습니다. item값을 이용하여 라벨링 정보를 확인 가능합니다. 아래의 목록을 foreach문에 사이에 삽입하여 라벨링 번호에 따른 데이터를 확인 할 수 있습니다.



       

  • //라벨링 번호 : b.Label
  • //중심점 : b.Centroid
  • //면적(moment 00) : b.Area
  • //등고선 각도 : b.Angle() / Math.PI * 180
  • //사각형 정보 : b.Rect
  • //라벨링의 시작 위치 : b.Contour.StartingPoint



  •             return blob;
            }

            public void Dispose24()
            {
                if (blob != null) Cv.ReleaseImage(blob);
            }

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


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



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

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

    C# OpenCv 결과물  (0) 2018.07.19
    C# OpenCv 템블릿 매칭(Template Matching)  (0) 2018.07.19
    C# OpenCv 흐림화(Blur)  (0) 2018.07.19
    C# OpenCv 영상 이진화  (0) 2018.07.19
    C# OpenCv 영상 출력 - 캡처 + 녹화 추가  (0) 2018.07.19
    Comments