ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • setTo 함수
    컴공지식/컴퓨터비전 2024. 8. 31. 15:30

    setTo 함수는 이미지나 행렬 내의 모든 값을 특정 값으로 설정하거나, 특정 조건에 맞는 부분만 특정 값으로 설정할 때 사용하는 함수다. 

     

    이 함수의 시그니처는 다음과 같다.

    Mat setTo(InputArray value, InputArray mask = noArray());

     

    InputArray value: Mat 행렬 또는 이미지의 모든 픽셀을 설정할 값이다. 

    이 값은 단일 값일 수도 있고, cv::Scalar 형태로 여러 채널을 한꺼번에 설정할 수도 있다. 

    예를 들어, RGB 이미지에서 (0, 255, 0)을 설정하면 모든 픽셀이 초록색이 된다.

     

    InputArray mask = noArray(): 마스크선택적으로 사용하는 매개변수다.

    이 매개변수를 사용하면 특정 조건에 맞는 픽셀만 설정할 수 있다.

    마스크는 보통 이진 이미지(0과 255로 이루어진 흑백 이미지)로, 마스크 값이 0이 아닌 부분만 value로 설정된다. 

    이 매개변수를 생략하면, 행렬의 모든 값이 value로 설정된다. 

     

    예시 코드는 다음과 같다.

     

    #include <opencv2/opencv.hpp>

    int main() {
        // 3x3 행렬을 생성하고 모든 값을 0으로 초기화
        cv::Mat mat = cv::Mat::zeros(3, 3, CV_8UC1);

        // 마스크 없이 행렬 전체를 255로 설정
        mat.setTo(255);
        std::cout << "마스크 없이 전체 설정:\n" << mat << std::endl;

        // 다시 0으로 초기화
        mat.setTo(0);

        // 3x3 마스크 생성, 중앙값만 1로 설정
        cv::Mat mask = (cv::Mat_<uchar>(3, 3) << 0, 0, 0, 0, 1, 0, 0, 0, 0);

        // 마스크를 사용해 행렬의 중앙 값만 255로 설정
        mat.setTo(255, mask);
        std::cout << "마스크 사용하여 중앙값만 설정:\n" << mat << std::endl;

        return 0;
    }

     

    cv::Mat::zeros(3, 3, CV_8UC1): 3x3 크기의 행렬을 생성하고, 모든 값을 0으로 초기화한다.

    mat.setTo(255): 마스크 없이 setTo를 사용해서 행렬의 모든 값을 255로 설정한다. 여기서는 전체 행렬이 255로 채워지게된다. 

    cv::Mat mask: 마스크는 3x3 행렬에서 중앙값만 1로 설정하고, 나머지는 0으로 설정한 거다.

    mat.setTo(255, mask): 이 줄에서는 마스크를 사용해서 중앙값만 255로 설정한다. 마스크의 값이 1인 위치(중앙값)만 설정되고, 나머지는 변경되지 않는다.

     

    출력은 다음과 같다

     

    마스크 없이 전체 설정:
    [255, 255, 255;
     255, 255, 255;
     255, 255, 255]

    마스크 사용하여 중앙값만 설정:
    [  0,   0,   0;
       0, 255,   0;
       0,   0,   0]

     

    setTo가 유용한 이유는 행렬의 전체 또는 특정 부분을 빠르고 효율적으로 원하는 값으로 설정할 수 있고 특정 조건에 맞는 부분만 바꾸는 작업이 매우 쉬워진다.

     

     

    '컴공지식 > 컴퓨터비전' 카테고리의 다른 글

    imread 함수  (0) 2024.08.31
    픽셀의 값이 바뀐다는 건 뭘까?  (0) 2024.08.31
    convertTo 함수  (0) 2024.08.31
    resize 함수  (0) 2024.08.31
    waitKey 함수  (0) 2024.08.31
Designed by Tistory.