더북(TheBook)

코드 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    }

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.