-
매트릭스 선언컴공지식/컴퓨터비전 2024. 8. 30. 00:24
Mat 뒤의 mtx나 img는 변수 이름이다.
Mat mtx(3, 3, CV_32F);
row = 3, column =3, 32비트플롯 1채널
Mat mtx(10, 1, CV_64FC2);
row = 10, column = 1, 64비트플롯 2채널
Mat img(1080, 1920, CV_8UC3);
row = 1080, column = 1920, 8-bit Unsigned 3채널
Mat img(Size(1920, 1080), CV_8UC3);
row = 1080, column = 1920, 8-bit Unsigned 3채널
추가로 Mat image(h, w, CV_8UC1, Scalar(255));도 알아보자
image라는 이름의 이미지를 생성하는 코드인데 h와 w라는 변수의 값을 받고
8-bit Unsigned 1채널이니 흑백 채널만을 이용한다.
Scalar(255)는 이 이미지의 모든 픽셀 값을 255, 즉 흰색으로 초기화하겠다는 뜻이다.
Scalar에 대해서 조금 더 알아보자면
OpenCV에서는 BGR 순서로 채널이 있는데 BGR은 각각 Blue, Green, Red 이다.
만약 Scalar(255, 0, 0) 이렇게 돼있다면
B(Blue)가 255이니 파란색 채널에만 값이 들어가게 된다.
선언에 대해 더 자세한 예를 들어서 설명해보겠다.
다음은 선언 후 이미지를 보여주는 예시 코드다
#include <opencv2/opencv.hpp>
int main() {
// VGA 사이즈: 640x480, 3채널, 8비트 unsigned 타입 매트릭스 선언
cv::Mat test(480, 640, CV_8UC3, cv::Scalar(0, 255, 0)); // BGR 포맷에서 초록색(0, 255, 0)으로 초기화
// 'test' 매트릭스 보여주기 (윈도우 창에 출력)
cv::imshow("Test Image", test);
cv::waitKey(0); // 키 입력 대기
return 0;
}여기서 cv::는 네임 스페이스다.
다른 라이브러리에서도 Mat이라는 이름을 가진 클래스가 있을 수 있지 않은가?
그렇기 때문에 cv::를 이용하여 이것은 opencv 라이브러리를 이용한 클래스라는 것을 명시해주는 것이다.
즉, 다른 라이브러리와 구분을 위한 것이다.
cv::Scalar(0, 255, 0) 이 부분은
이 이미지를 BGR 중 Green에만 255를 할당하는 것이기 때문에, 모든 픽셀을 초록색으로 초기화를 시켜준다.
cv::imshow("Test Image", test); 이 함수는 test 이미지를 Test Image라는 창을 만들어 보여주는 역할을 한다.
cv::waitKey(0);: 이 함수는 사용자가 아무 키나 입력할 때까지 창을 열어둔다.
만약 이게 없으면 이미지가 잠깐 보이고 사라질 것이다.
'컴공지식 > 컴퓨터비전' 카테고리의 다른 글
convertScaleAbs 함수 (0) 2024.08.31 픽셀에 관하여 (0) 2024.08.30 Mat copy (0) 2024.08.30 비디오의 total bit 구하기 (0) 2024.08.30 Intensity level이란? (0) 2024.08.29