상세 컨텐츠

본문 제목

new cv.Mat()

OpenCV

by 폴리프레임 2024. 9. 16. 13:22

본문

반응형

OpenCV에서 이미지 데이터행렬(Matrix)을 표현하는 기본적인 객체입니다. 이 객체는 행렬의 크기, 데이터 유형, 채널 수 등을 정의하여 이미지나 데이터를 저장할 수 있는 구조를 제공합니다. 

 

new cv.Mat(height, width, type)의 형태로 사용되며, height 와 width는 비디오나 이미지의 높이와 넓이를 나타내며, type은 이미지 또는 행렬의 데이터 타입을 정의합니다. 이 데이터 타입은 OpenCV에서 cv.CV_8UC4, cv.CV_8UC1 등과 같은 상수로 표현되며, 이 상수는 이미지의 비트 깊이채널 수를 나타냅니다.

// RGBA 이미지 생성 (4채널)
let rgbaMat = new cv.Mat(480, 640, cv.CV_8UC4);  // 640x480 크기의 4채널 이미지

// 그레이스케일 이미지 생성 (1채널)
let grayMat = new cv.Mat(480, 640, cv.CV_8UC1);  // 640x480 크기의 1채널 이미지
  • CV: OpenCV에서 사용되는 상수 접두사.
  • CV_8U: 이 부분은 픽셀당 8비트의 부호 없는 정수(unsigned 8-bit integer)**를 의미합니다.
  • C4: 이 부분은 4개의 채널(channel)을 의미합니다. 각 픽셀이 4개의 값을 가지며, 보통 이는 RGBA(Red, Green, Blue, Alpha) 색상 공간을 나타냅니다.
  • C1: 이 부분은 1개의 채널을 의미하며, 보통 그레이스케일(흑백) 이미지나 1채널 데이터로 처리됩니다.

중요한 데이터타입

 

  • cv.CV_8UC1: 8비트 부호 없는 정수, 1채널 (그레이스케일 이미지)
  • cv.CV_8UC3: 8비트 부호 없는 정수, 3채널 (RGB 이미지)
  • cv.CV_8UC4: 8비트 부호 없는 정수, 4채널 (RGBA 이미지)
  • cv.CV_16UC1: 16비트 부호 없는 정수, 1채널 (16비트 그레이스케일 이미지)
  • cv.CV_16UC3: 16비트 부호 없는 정수, 3채널 (16비트 RGB 이미지)
  • cv.CV_32FC1: 32비트 부동 소수점, 1채널 (실수형 그레이스케일 이미지)
  • cv.CV_32FC3: 32비트 부동 소수점, 3채널 (실수형 RGB 이미지)

 

let gray = new cv.Mat();

위 처럼, cv.Mat() 생성자에 인자를 전달하지 않을 경우, 빈 행렬(empty matrix)을 생성합니다. 이때, 생성된 행렬은 크기, 타입, 채널 수 등 모든 속성이 초기화되지 않은 상태로 비어 있습니다.

구체적으로, 다음과 같은 특징을 가집니다:

  • 행렬의 크기: (0, 0) 크기
  • 데이터 타입: 없음 (초기화되지 않음)
  • 채널 수: 없음 (초기화되지 않음)
  • 메모리 할당: 메모리가 할당되지 않은 빈 상태
let gray = new cv.Mat();  // 빈 행렬 생성
console.log(gray.empty());  // true: 빈 상태
console.log(gray.rows, gray.cols);  // 0 0: 행과 열이 초기화되지 않음

// 크기와 타입을 지정하여 할당
gray.create(480, 640, cv.CV_8UC1);  // 480x640 크기의 1채널 그레이스케일 이미지로 초기화
console.log(gray.empty());  // false: 데이터가 할당된 상태
console.log(gray.rows, gray.cols);  // 480 640: 크기가 설정됨

'OpenCV' 카테고리의 다른 글

cv.blobFromImage()  (0) 2024.09.17
new cv.CascadeClassifier()  (0) 2024.09.16
new cv.RectVector()  (1) 2024.09.16
new cv.VideoCapture()  (2) 2024.09.16

관련글 더보기