-
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(검은색)으로 변환된다.
이 함수는
입력 배열에서 lowerb와 upperb 사이에 있는 값들은 모두 흰색(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