C# OpenCV 강좌 : 제 9강 - 자르기

C# OpenCV Slice

C# OpenCV 강좌 : 제 9강 - 자르기
[ C#-OpenCvSharp2 ] - 윤대희

자르기(Slice)


0 영상이나 이미지의 원하는 부분만 자를 수 있습니다.


원본(Source, src)를 영상이나 이미지를 사용하면 됩니다.

영상 사용하기 : 3강 바로가기

이미지 사용하기 : 4강 바로가기



Class


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;

namespace test
{
    class OpenCV : IDisposable
    {
        IplImage slice;
            
        public IplImage Slice(IplImage src)
        {
            slice = new IplImage(Cv.Size(165, 35), BitDepth.U8, 3);
            Cv.SetImageROI(src, new CvRect(240, 280, slice.Width, slice.Height));
            Cv.Resize(src, slice);
            Cv.ResetImageROI(src);
            return slice;
        }
            
        public void Dispose()
        {
            if (slice != null) Cv.ReleaseImage(slice);
        }
    }
}                    



Class Code


public IplImage Slice(IplImage src)
{
    ...
}

Slice에서 영상을 원하는 부분을 자르게 됩니다.


slice = new IplImage(Cv.Size(165, 35), BitDepth.U8, 3);

slice에 메모리 확보를 위하여 선언합니다. IplImage(크기, 정밀도, 채널)을 입력합니다. 단색일 경우 채널은 1이며, 다색일 경우 채널은 3입니다.

  • Tip : Cv.Size()를 이용하여 자를 부분의 크기를 설정합니다.


Cv.SetImageROI(src, new CvRect(240, 280, slice.Width, slice.Height));
Cv.Resize(src, slice);
Cv.ResetImageROI(src);

Cv.SetImageROI()을 이용하여 자를 부분을 설정합니다. Cv.SetImageROI(소스, new CvRect(x좌표 시작점, y좌표 시작점, 넓이, 높이))를 의미합니다.

  • Tip : 좌표는 왼측 상단이 (0, 0)이며 우측 하단이 (max, max)입니다. 보통 사용하는 좌표계와 약간 다르니 주의하시기 바랍니다. 시작점에서 우측방향과 하단 방향으로 도착점이 됩니다.

Cv.Reisze()를 이용하여 slice에 잘라진 src를 넣어줍니다. 크기는 같기 때문에 보간할 필요가 없습니다.

Cv.ResetImageROI(src)를 이용하여 잘라진 src초기 상태의 src로 변경합니다.

  • Tip : 잘라진 src를 반환하여 사용하여도 되는데, 이렇게 하지 않는 이유는 부가적인 작업을 추가적으로 할 때, 원본 src를 사용하게 되면 잘라진 src를 사용하기 때문에 원본으로 작업하였으면 초기화시켜주어야합니다.


그래픽스 알아보기 : 6강 바로가기



Main Code


using (OpenCV Convert = new OpenCV())
{
    pictureBoxIpl2.ImageIpl = Convert.Slice(src);
}

Slice(240, 280) ~ (405, 315)까지의 이미지를 표시합니다.



Result


원본

1


(240, 280) ~ (405, 315)

2



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post C# OpenCV 강좌 : 제 8강 - 크기 조절 ⤧  Next post C# OpenCV 강좌 : 제 10강 - 그레이스케일
    C#-OpenCvSharp2 Category