cv::Mat (cv 는 namespace를 의미하고 특별을 using namespace cv; 를 명시하지 않는 이상 지정을 해야 함)
- 2D (W x H) 이미지 정보를 보관하는 클래스
- 이미지 데이터는 힙메모리에 존재하고 cv::Mat 는 메모리 주소를 보관하게 된다.
- 이미지 메모리는 명시적으로 release() 멤버 함수를 이용하여 명시적으로 삭제 할 수 있으나 암시적으로 참조 카운트가 0 가 되었을 때 자동 삭제된다.
- 메모리 삭제 코드의 누락으로 이미지 메모리가 좀비로 될 가능성이 없다.
- 기본적으로 메모리상 이미지 색상의 저장 순서는 B G R 순이다. (관습상 BMP 포멧 배열이기 때문)
type()
- 1 픽셀의 내부 구성요소를 의미한다.
여러 타입이 있지만 이미지 처리에선 아래 2가지만 생각하자.
CV_8UC1 : 8bits Unsigned Component 1개 = gray image
CV_8UC3 : 8bits Unsigned Component 3개 = color(BGR) image
※ Unsigned = 이미지의 픽셀레벨이 0-255 이므로 부호없는 타입이기 때문이다
cv::Mat 인스턴스(= 메모리 확보)를 생성하는 방법
- 캉통 인스턴스
cv::Mat image; - 캉통 인스턴스에 이미지 파일을 로드하여 결부
image = cv::imread(풀 패스); - 캉통 인스턴스에 이미지 처리 결과를 카피하여 결부
cv::cvtColor( 칼라Mat인스턴스, image, cv::COLOR_BGR2GRAY); - 이미지 메모리 공간을 확보
※ ( 사이즈 정보, 타입, 초기값 )
cv::Mat image(cv::Size(넓이, 높이), cv::CV_8UC3, cv::Scalar(0, 0, 0));
cv::Mat image = cv::Mat(cv::Size(넓이, 높이), cv::CV_8UC3, cv::Scalar(0, 0, 0));
초기값을 지정없이 cv::Mat::zeros 로 정의
cv::Mat image = cv::Mat::zeros(cv::Size(넓이, 높이), cv::CV_8UC3);
'opencv' 카테고리의 다른 글
스캔문서의 기울기 알아보기 (0) | 2023.11.26 |
---|---|
(opencv) 이미지 저장형태, 액서스 (1) | 2023.11.25 |
(opencv) Rectangle 간의 조작에 관해 (1) | 2023.11.23 |
(opencv) pixel access time (0) | 2023.08.09 |
(opencv) 환경설정 (0) | 2023.08.05 |