Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- DDPM
- 티스토리챌린지
- CNN
- Action Recognition
- 딥러닝
- Focal loss
- posec3d
- covolution
- 모수 추정 방법
- 최대 사후 확률
- computer graphics
- deformable covolution
- 오블완
- Deep Learning
- Unreal Engine
- Swin Transformer
- depthwise convolution
- convolution
- 포인터
- 최대 가능도 추정
- Diffusion
- mobilenet
- Image denoising
- C++
- OpenGL
- Vision Transformer
Archives
- Today
- Total
심드렁하게 저장
OpenCV 자료형 : Mat과 Mat_의 차이 본문
OpenCV에서 Mat과 Mat_은 둘 다 이미지를 저장하고 처리하기 위한 행렬 데이터 타입이지만, 용도와 기능에서 몇 가지 차이가 있다.
1. Mat (cv::Mat) :
- 일반적인 행렬클래스:
- OpenCV에서 가장 널리 사용되는 행렬클래스
- 다양한 데이터 타입과 다차원 배열을 지원하고 이미지, 비디오 프레인, 혹은 데이터를 표현할 때 주로 사용
- 유연한 데이터 타입 지원:
- 픽셀 값의데이터 타입(예:CV_8UC3, CV_32FC1 등)을 설정할수있으며, 일반적으로 OpenCV의 함수들과 함께 사용
- 템플릿 클래스 X
- Mat은 템플릿 클래스가 아니고 데이터 타입을 별도로 지정하는 방식
- CV_8UC3은 8비트 3채널 행렬을의미
cv::Mat img = cv::imread("image.jpg", cv::IMREAD_COLOR); // 컬러 이미지를 읽음
2. Mat_ (cv::Mat_<T>) :
- 템플릿 행렬 클래스:
- Mat의 템플릿 버전으로, 특정 데이터 타입과 강하게 연관된 행렬 클래스
- 템플릿 타입 T를 통해 데이터 타입을 명시적으로 지정
- 명시적인 타입 지정:
- 행렬 데이터에 대한 타입 정보를 명확히 표현
- 예를 들어, cv::Mat_<float>은 float 타입의 행렬로 고정
- 편리한 연산
- () 연산자를 사용하여 픽셀에 직접 접근할 수 있어 at<T>() 함수보다 코드가 간결해짐
cv::Mat_<float> mat(2, 2); // 2x2 float 행렬 생성
mat(0, 0) = 1.0f;
mat(0, 1) = 2.0f;
mat(1, 0) = 3.0f;
mat(1, 1) = 4.0f;
3. 사용 기준
- Mat:
- 다양한 데이터 타입과 이미지 처리가 필요할 때
- OpenCV의 대부분의 함수와 함께 사용할 때
- Mat_:
- 특정 데이터 타입에 대해 명확히 지정하고 템플릿 기반 코드를 작성하고 싶을 때
- 픽셀 접근을 간소화하려고 할 때
일반적으로 OpenCV에서는 Mat이 더 많이 사용되며, Mat_은 특정 상황에서만 선택적으로 사용된다.
'Image Processing & Computer Vision' 카테고리의 다른 글
| 이미지 명암 대비 개선 - 히스토그램 평활화 / 스트레칭 (1) | 2024.12.23 |
|---|