ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 매트릭스 선언
    컴공지식/컴퓨터비전 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
Designed by Tistory.