Home > Backend Development > Python Tutorial > How to Effectively Determine HSV Color Boundaries for Object Detection using cv::inRange?

How to Effectively Determine HSV Color Boundaries for Object Detection using cv::inRange?

Barbara Streisand
Release: 2024-12-02 01:56:09
Original
542 people have browsed it

How to Effectively Determine HSV Color Boundaries for Object Detection using cv::inRange?

Choosing Color Boundaries for Object Detection with cv::inRange (OpenCV)

When utilizing the cv::inRange function for color detection, selecting appropriate upper and lower HSV boundaries is crucial. This article addresses the question of how to effectively determine these boundaries based on a specific color of interest.

Background

HSV (Hue, Saturation, Value) is a color space commonly used in image processing. The HSV model represents colors as three components:

  • Hue (H): Represents the color shade (e.g., red, blue).
  • Saturation (S): Measures the amount of color present in the shade (0-1).
  • Value (V): Represents the brightness of the color (0-255).

Choosing Boundaries

Determining proper HSV boundaries is based on the specific color being detected. Here's a step-by-step guide:

  1. Determine Hue:

    • Use a color picker tool to identify the HSV values of the object of interest.
    • Note that different scales might be used for HSV values depending on the application.
  2. Adjust Hue Range:

    • Account for slight variations in hue by adjusting the range around the identified value.
    • For example, if the hue is 22 (out of 179), a range of (11-33) could be appropriate.
  3. Set Saturation and Value Ranges:

    • Use a reasonable range for saturation (e.g., 50-255).
    • For value, choose a range that includes the expected brightness of the object.
  4. Consider Format:

    • Ensure that the HSV conversion is appropriate for your image format.
    • For example, OpenCV uses BGR, not RGB for image representation.

Example

Let's consider the example of detecting an orange lid in an image.

  1. HSV Values:

    • Using a color picker, we obtain an HSV value of (22, 59, 100).
  2. Adjusted Boundaries:

    • Hue range: (11-33)
    • Saturation range: (50-255)
    • Value range: (50-255)
  3. Python Code:

    import cv2
    import numpy as np
    
    ORANGE_MIN = np.array([11, 50, 50], np.uint8)
    ORANGE_MAX = np.array([33, 255, 255], np.uint8)
    
    # Read and convert image
    img = cv2.imread('image.png')
    hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    # Detect orange using inRange
    mask = cv2.inRange(hsv_img, ORANGE_MIN, ORANGE_MAX)
    # Display mask
    cv2.imshow('Mask', mask)
    cv2.waitKey(0)
    Copy after login

The above is the detailed content of How to Effectively Determine HSV Color Boundaries for Object Detection using cv::inRange?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template