ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • inRange 함수
    컴공지식/컴퓨터비전 2024. 10. 2. 22:50

    이 함수는 이미지나 배열에서 특정 범위에 속하는 값들을 찾아내서 이진 이미지(흑백)로 변환하는 데 사용한다.

    예를 들어, 어떤 이미지에서 빨간색만 골라내고 싶을 때 이 함수를 쓸 수 있다.

    void inRange(cv::InputArray src, cv::InputArray lowerb, cv::InputArray upperb, cv::OutputArray dst)

    이런 모양이다.

     

    lowerb는 하한선, 배열이나 스칼라 값으로 주어질 수 있다. 이 값보다 크거나 같은 픽셀만 선택된다.

    upperb는 상한선, 마찬가지로 배열이나 스칼라 값으로 주어지며, 이 값보다 작거나 같은 픽셀만 선택된다.

    dst는 결과가 저장될 출력 배열이다. 이 배열은 src와 같은 크기로 만들어지고, 결과로 나오는 이미지는 CV_8U(8비트, 0과 255 사이) 타입의 이진 이미지다. 즉, 범위 안에 들어오는 값들은 255(흰색)으로, 그 밖의 값들은 0(검은색)으로 변환된다.

     

    이 함수는

    입력 배열에서 lowerbupperb 사이에 있는 값들은 모두 흰색(255)으로 표시하고 그 외의 값들은 검은색(0)으로 변환한다.

     

    다음은 실제 코드 사용 예다

    int main() {
        Mat image = imread("hand.png"); // 이미지를 읽어옴
        cvtColor(image, image, CV_BGR2YCrCb); // 이미지 색 공간을 BGR에서 YCrCb로 변환
        inRange(image, Scalar(0, 133, 77), Scalar(255, 173, 127), image); // 피부색 범위를 이용해 색상 필터링
        
        imshow("inRange", image); // 결과 이미지 보여줌
        waitKey(0); // 키 입력 대기
        return 0;
    }

     

     

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

    Local (Adaptive) Thresholding 코드 구현  (0) 2024.10.02
    Global Thresholding 구현 코드  (1) 2024.10.02
    adaptiveThreshold 함수 코드  (0) 2024.10.02
    threshold 처리 코드  (0) 2024.10.02
    GrabCut이란?  (1) 2024.10.02
Designed by Tistory.