코드 10-5 inRange( ) 함수를 이용한 특정 색상 영역 분할 [ch10/inrange]
01 #include "opencv2/opencv.hpp" 02 #include <iostream> 03 04 using namespace cv; 05 using namespace std; 06 07 int lower_hue = 40, upper_hue = 80; 08 Mat src, src_hsv, mask; 09 10 void on_hue_changed(int, void*); 11 12 int main(int argc, char* argv[]) 13 { 14 src = imread("candies.png", IMREAD_COLOR); 15 16 if (src.empty()) { 17 cerr << "Image load failed!" << endl; 18 return -1; 19 } 20 21 cvtColor(src, src_hsv, COLOR_BGR2HSV); 22 23 imshow("src", src); 24 25 namedWindow("mask"); 26 createTrackbar("Lower Hue", "mask", &lower_hue, 179, on_hue_changed); 27 createTrackbar("Upper Hue", "mask", &upper_hue, 179, on_hue_changed); 28 on_hue_changed(0, 0); 29 30 waitKey(0); 31 return 0; 32 } 33 34 void on_hue_changed(int, void*) 35 { 36 Scalar lowerb(lower_hue, 100, 0); 37 Scalar upperb(upper_hue, 255, 255); 38 inRange(src_hsv, lowerb, upperb, mask); 39 40 imshow("mask", mask); 41 }