Open Source Computer Vision Library https://opencv.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

6.3 KiB

Thresholding Operations using inRange

@prev_tutorial{tutorial_threshold} @next_tutorial{tutorial_filter_2d}

Goal

In this tutorial you will learn how to:

  • Perform basic thresholding operations using OpenCV @ref cv::inRange function.
  • Detect an object based on the range of pixel values in the HSV colorspace.

Theory

  • In the previous tutorial, we learnt how to perform thresholding using @ref cv::threshold function.
  • In this tutorial, we will learn how to do it using @ref cv::inRange function.
  • The concept remains the same, but now we add a range of pixel values we need.

HSV colorspace

HSV (hue, saturation, value) colorspace is a model to represent the colorspace similar to the RGB color model. Since the hue channel models the color type, it is very useful in image processing tasks that need to segment objects based on its color. Variation of the saturation goes from unsaturated to represent shades of gray and fully saturated (no white component). Value channel describes the brightness or the intensity of the color. Next image shows the HSV cylinder.

By SharkDderivative work: SharkD [CC BY-SA 3.0 or GFDL], via Wikimedia Commons

Since colors in the RGB colorspace are coded using the three channels, it is more difficult to segment an object in the image based on its color.

By SharkD [GFDL or CC BY-SA 4.0], from Wikimedia Commons

Formulas used to convert from one colorspace to another colorspace using @ref cv::cvtColor function are described in @ref imgproc_color_conversions

Code

@add_toggle_cpp The tutorial code's is shown lines below. You can also download it from here @include samples/cpp/tutorial_code/ImgProc/Threshold_inRange.cpp @end_toggle

@add_toggle_java The tutorial code's is shown lines below. You can also download it from here @include samples/java/tutorial_code/ImgProc/threshold_inRange/ThresholdInRange.java @end_toggle

@add_toggle_python The tutorial code's is shown lines below. You can also download it from here @include samples/python/tutorial_code/imgProc/threshold_inRange/threshold_inRange.py @end_toggle

Explanation

Let's check the general structure of the program:

Results

  • After compiling this program, run it. The program will open two windows

  • As you set the range values from the trackbar, the resulting frame will be visible in the other window.