OpenCV Mat

정소원·2023년 5월 1일
0

Computer Vision

목록 보기
2/6

data structure

Mat

  • Mat Object
  • images in OpenCV are stored in a Mat Object

consists of

  • header
  • a pointer to the matrix containing pixel values

주의점

  • mat은 body data를 가리키는 포인터로 동작함

→ 복사시 동일한 body data를 가리키는 것을 원하지 않을 경우 변수명.clone() 함수를 사용

Image Types

Type of Mat object

  • 이진 데이터를 해석하는 방법을 정의함

Represent

  • CV_C<#Channel>
    • e.g. CV_8UC3: 8-bit/pixel , 3 channel

Pixel Type

  • BGR (default)
  • GRAYSCALE
  • HSV
  • YUV

Creating Mat

  • Mat M;
  • Mat M (rows, colums, pixel_type);
  • Mat M (rows, colums, pixel_type, Scalar(initial_value));
  • Mat M (Size(colums, rows), pixel_type, Scalar(initial_value));
  • body data는 RGB가 아닌 BGR로 저장된다.

→ Scalar(B value,G value,R value)

Accessing Information

Access to Mat Information

  • Mat.type() - return data type
  • Mat.depth() - return number of bytes for a matrix element

Access to Mat Pixels

  • Mat.at (row,col)[channel] : returns a pointer to the image data

Mat Size

Size = #colums #rows #channels * channel depth

  • Mat.colums
  • Mat.rows
  • Mat.channels
  • Mat.elemSize1 - 채널당 비트수
  • Mat.elemSize - 한 픽샐당 크기(채널수 * 비트수)

Pointer

  • src(원본 데이터)와 dst(복사 데이터)의 body data 공유 (shallow copy)
  • 원본 데이터를 공유하지 않고 독립적으로 할당하는 방법 필요 (deep copy)
    • 기억장소 추가 할당 + 이미지 데이터 복사
    • clone()
    • copyTo(Mat)
profile
성장지향형 자율주행 소프트웨어 개발자입니다. K-Digital-Training: 자율주행 데브코스 Planning & Control 1기로 활동하고 있습니다. 본 블로그를 통해 배움기록을 실천하고 있습니다. #자율주행 #기계공학

0개의 댓글