• cv::inRange


    // 简单实现
     cv::namedWindow("Example 2-3", cv::WINDOW_AUTOSIZE);
    
        cv::VideoCapture cap;
    
        cap.open(0);
        cout << "Opened file: " << argv[1] << endl;
    
        cv::Mat frame, frame_threshold;
        int low_r = 30, low_g = 30, low_b = 30;
        int high_r = 100, high_g = 100, high_b = 100;
    
        for (;;) {
    
            cap >> frame;
    
            if (frame.empty()) break; // Ran out of film
            
            inRange(frame, cv::Scalar(low_b, low_g, low_r), cv::Scalar(high_b, high_g, high_r), frame_threshold);
            //-- Show the frames
            imshow("Video Capture", frame);
            imshow("Object Detection", frame_threshold);
    
            if ((char)cv::waitKey(33) >= 0) break;
            
    
    
        }
    
        return 0;
    

      

    // 完整实现
    #include "opencv2/imgproc.hpp"
    #include "opencv2/highgui.hpp"
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    using namespace cv;
    void on_low_r_thresh_trackbar(int, void*);
    void on_high_r_thresh_trackbar(int, void*);
    void on_low_g_thresh_trackbar(int, void*);
    void on_high_g_thresh_trackbar(int, void*);
    void on_low_b_thresh_trackbar(int, void*);
    void on_high_b_thresh_trackbar(int, void*);
    int low_r = 30, low_g = 30, low_b = 30;
    int high_r = 100, high_g = 100, high_b = 100;
    int main()
    {
        Mat frame, frame_threshold;
        VideoCapture cap(0);
        namedWindow("Video Capture", WINDOW_NORMAL);
        namedWindow("Object Detection", WINDOW_NORMAL);
        //-- Trackbars to set thresholds for RGB values
        createTrackbar("Low R", "Object Detection", &low_r, 255, on_low_r_thresh_trackbar);
        createTrackbar("High R", "Object Detection", &high_r, 255, on_high_r_thresh_trackbar);
        createTrackbar("Low G", "Object Detection", &low_g, 255, on_low_g_thresh_trackbar);
        createTrackbar("High G", "Object Detection", &high_g, 255, on_high_g_thresh_trackbar);
        createTrackbar("Low B", "Object Detection", &low_b, 255, on_low_b_thresh_trackbar);
        createTrackbar("High B", "Object Detection", &high_b, 255, on_high_b_thresh_trackbar);
        while ((char)waitKey(1) != 'q') {
            cap >> frame;
            if (frame.empty())
                break;
            //-- Detect the object based on RGB Range Values
            inRange(frame, Scalar(low_b, low_g, low_r), Scalar(high_b, high_g, high_r), frame_threshold);
            //-- Show the frames
            imshow("Video Capture", frame);
            imshow("Object Detection", frame_threshold);
        }
        return 0;
    }
    void on_low_r_thresh_trackbar(int, void*)
    {
        low_r = min(high_r - 1, low_r);
        setTrackbarPos("Low R", "Object Detection", low_r);
    }
    void on_high_r_thresh_trackbar(int, void*)
    {
        high_r = max(high_r, low_r + 1);
        setTrackbarPos("High R", "Object Detection", high_r);
    }
    void on_low_g_thresh_trackbar(int, void*)
    {
        low_g = min(high_g - 1, low_g);
        setTrackbarPos("Low G", "Object Detection", low_g);
    }
    void on_high_g_thresh_trackbar(int, void*)
    {
        high_g = max(high_g, low_g + 1);
        setTrackbarPos("High G", "Object Detection", high_g);
    }
    void on_low_b_thresh_trackbar(int, void*)
    {
        low_b = min(high_b - 1, low_b);
        setTrackbarPos("Low B", "Object Detection", low_b);
    }
    void on_high_b_thresh_trackbar(int, void*)
    {
        high_b = max(high_b, low_b + 1);
        setTrackbarPos("High B", "Object Detection", high_b);
    }
    

      参考:https://www.w3cschool.cn/opencv/opencv-k1vh2cod.html

  • 相关阅读:
    NOIP 模拟 $94; m 超级加倍$
    NOIP 模拟 $94; m 欢乐豆$
    NOIP 模拟 $94; m 叁仟柒佰万$
    NOIP 模拟 $94; m 开挂$
    NOIP 模拟 $92; m 优美的旋律$
    NOIP 模拟 $92; m 翻转游戏$
    NOIP 模拟 $92; m 石子合并$
    NOIP 模拟 $90; m 校门外歪脖树上的鸽子$
    NOIP 模拟 $90; m 混乱邪恶$
    NOIP 模拟 $90; m 快速排序$
  • 原文地址:https://www.cnblogs.com/leochan007/p/16728979.html
Copyright © 2020-2023  润新知