>  기사  >  백엔드 개발  >  HSV 색상 공간을 사용하여 OpenCV에서 빨간색 감지를 어떻게 향상시킬 수 있습니까?

HSV 색상 공간을 사용하여 OpenCV에서 빨간색 감지를 어떻게 향상시킬 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-16 08:43:02798검색

How can I improve red color detection in OpenCV using HSV color space?

OpenCV를 이용한 향상된 빨간색 탐지

소개

OpenCV와 HSV 색상을 이용한 빨간색 탐지를 다룰 때 공간이 부족하여 만족스러운 결과를 얻기 어려울 수 있습니다. 그러나 다양한 접근 방식과 매개변수 조정을 탐색하면 상당한 개선이 이루어질 수 있습니다.

문제

이미지 내의 빨간색 직사각형 감지 기능을 향상하려면 다음 코드를 사용하세요. 활용되었습니다:

#include <opencv2/opencv.hpp>

int main()
{
    // Image initialization
    Mat input = imread("path_to_image");

    // HSV conversion
    Mat imageHSV;
    cvtColor(input, imageHSV, COLOR_BGR2HSV);

    // HSV parameter ranges
    int H_MIN = 0;
    int H_MAX = 10;
    int S_MIN = 70;
    int S_MAX = 255;
    int V_MIN = 50;
    int V_MAX = 255;

    // Red color range in HSV
    cv::inRange(imageHSV, cv::Scalar(H_MIN, S_MIN, V_MIN),
                cv::Scalar(H_MAX, S_MAX, V_MAX), imgThreshold0);
}

동적 트랙바를 사용하여 HSV 값을 조정하더라도 최적의 결과를 얻기 어렵습니다.

솔루션

1 . 색조 값 범위 확장:

HSV 공간에서 빨간색은 180 주위에 있습니다. 따라서 빨간색의 전체 범위를 완전히 캡처하려면 색상 값(H)이 [0,10]을 모두 고려해야 합니다. 그리고 [170, 180].

inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);

2. 이미지 반전 및 청록색 감지:

또는 흥미로운 접근 방식은 다음과 같습니다.

  • 원본 BGR 이미지를 반전합니다.
  • 역전된 이미지를 HSV로 변환합니다. .
  • 빨간색 대신 청록색(HSV 90 정도)을 감지합니다.

이 방법은 HSV에서 단일 범위만으로 빨간색(청록색)의 보색을 효과적으로 감지합니다.

// Invert original image
Mat3b bgr_inv = ~bgr;

// Convert to HSV
Mat3b hsv_inv;
cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV);

// Detect cyan range
inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask);

결론

이러한 향상된 기술을 통합함으로써 OpenCV는 더욱 정확하게 빨간색을 효과적으로 감지할 수 있습니다. 이러한 접근 방식은 다양한 이미지 처리 시나리오에서 추가 최적화 및 적용을 위한 견고한 기반을 제공합니다.

위 내용은 HSV 색상 공간을 사용하여 OpenCV에서 빨간색 감지를 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.