[OpenCV] 개요, 기초 함수와 클래스

zzwon1212·2023년 10월 24일
0

OpenCV

목록 보기
3/16
post-thumbnail

1. 컴퓨터 비전 처리 과정

  • 위 썸네일 참조

2. OpenCV란?

2.1. 개요

  • Computer vision과 Machine learning 오픈 소스 소프트웨어 라이브러리
  • 다양한 언어 지원: C, C++, Python, Java, etc.
  • 다양한 플랫폼 지원: Windows, Linux, Mac OS, iOS, Android
  • 최적화: CPU instruction, Mulit-core processing, OpenCL, CUDA

2.2. 모듈

  • OpenCV는 모듈이라고 불리는 다수의 라이브러리들의 집합

  • 메인 모듈: 핵심 기능, 널리 사용되는 기능, 기반 기능(infrastructure)

    모듈설명
    calib3d카메라 갤리브레이션과 3자원 재구성
    core행렬, 벡터 등의 OpenCV 핵심 클래스와 연산 함수
    dnn심층 신경망 기능
    features2d2자원 특징 추출과 특징 벡터 기술, 매칭 방법
    flann다차원 공간에서 빠른 최근방 이웃 검색
    highgui영상의 화면 출력, 마우스 이벤트 처리 등의 사용자 인터페이스
    imgcodecs영상 파일 입출력
    imgproc필터링, 기하학적 변환, 색 공간 변환 등의 영상 처리 기능
    ml통계적 분류, 회기 등의 머신 러닝 알고리즘
    java, JS, pythonJava, JavaScript, Python 인터페이스 지원
    objdetect얼굴, 보행자 검출 등의 객체 검출
    photoHDR, 잡음 제거 등의 사진 처리 기능
    stitching영상 이어 붙이기
    Video옵티컬 플로우, 배경 차분 등의 동영상 처리 기술
    videoio동영상 파일 입출력
    world여러 OpenCV 모듈을 포함하는 하나의 통합 모듈
  • 추가(extra) 모듈: 최신 기능, 널리 사용되지 않는 기능, 특허, HW 의존적 기능(CUDA) 등

    모듈설명
    arucoArUco Marker Detection (augmented reality & camera calibration)
    bgsegmImproved Background-Foreground Segmentation Methods
    cudaXXXXXXCUDA-accelerated modules
    faceFace recognition techniques, face landmark detection
    freetypeFreeType module
    optflowOptical Flow Algorithms
    sfmStructure From Motion module
    shapeShape descriptors and matchers
    stereoStereo correspondence with different descriptors
    superresSuper Resolution
    trackingObject tracking API
    videostabVideo stabilization
    xfeatures2dExtra 2D Features Framework
    ximgprocExtended image processing module

3. 기초 함수

  • imread(): 이미지 불러오기
  • img.empty()
  • imwrite(): 이미지 저장
  • namedWindow(): 새 창 띄우기
  • imshow(): 화면에 이미지 출력. waitKey가 없으면 화면이 바로 닫히기 때문에 대부분의 경우 두 코드를 같이 사용한다.
  • waitKey(): 키 입력 대기
  • destroyAllWindows(): 모든 창 닫기

4. 기초 클래스

4.1. Point_, Size_, Rect_, Range_

  • Point_

    • 2차원 점의 좌표 표현을 위한 템플릿 클래스
    • 멤버 변수: x, y
    • 멤버 함수: dot(), ddot(), cross(), inside()
    • 다양한 사칙 연산에 대한 연산자 오버로딩과 std::cout 출력을 위한 << 연산자 오버로딩을 지원
  • Size_

    • 영상 또는 사각형의 크기 표현을 위한 템플릿 클래스
    • 멤버 변수: width, height
    • 멤버 함수: area()
    • 다양한 사칙 연산에 대한 연산자 오버로딩과 std::cout 출력을 위한 << 연산자 오버로딩을 지원
  • Rect_

    • 2차원 사각형 표현을 위한 템플릿 클래스
    • 멤버 변수: x, y, width, height
    • 멤버 함수: tl(), br(), size(), area(), contains()
    • 다양한 사칙 연산에 대한 연산자 오버로딩과 std::cout 출력을 위한 << 연산자 오버로딩을 지원
  • Range

    • 정수 값의 범위를 나타내기 위한 클래스
    • 멤버 변수: start, end
    • 멤버 함수: size(), empty(), all()
    • 범위: [start, end)

4.2. String_, Vec_, Scalar_

  • String

    • OpenCV 4.x부터 std::string 클래스로 대체
  • Vec

    • 벡터는 같은 자료형 원소 여러 개로 구성된 데이터 형식
    • Vec 클래스는 벡터를 표현하는 템플릿 클래스
    • std::cout 출력을 위한 << 연산자 오버로딩을 지원
  • Scalar

    • 크기가 4인 double 배열(double val\[4])을 멤버 변수로 가지고 있는 클래스
    • 4채널 이하의 영상에서 픽셀 값을 표현하는 용도로 자주 사용
    • [] 연산자를 통해 원소에 접근 가능

4.3. InputArray_, OutputArray_, InputOutputArray_

  • InputArray

    • 주로 Mat 클래스를 대체하는 프록시 클래스(proxy class)로 OpenCV 함수에서 입력 인자로 사용됨
    • 사용자가 명시적으로 _InputArray 클래스의 인스턴스 또는 변수를 생성하여 사용하는 것을 금지
  • OutputArray

    • OpenCV 함수에서 출력 인자로 사용되는 프록시 클래스
    • _OutputArray 클래스는 _InputArray 클래스를 상속받아 만들어졌으며, 새로운 행렬을 생성하는 create() 함수가 정의되어 있음.
  • InputOutputArray

    • OpenCV 함수에서 입력이자 출력으로 사용되는 프록시 클래스

5. Mat 클래스

  • 링크 참조

📙강의 - 강사 황선규

profile
JUST DO IT.

0개의 댓글