> 백엔드 개발 > 파이썬 튜토리얼 > OpenCV에서 정확한 색상 감지를 위해 올바른 HSV 상한 및 하한 경계를 선택하는 방법은 무엇입니까?

OpenCV에서 정확한 색상 감지를 위해 올바른 HSV 상한 및 하한 경계를 선택하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-02 01:36:10
원래의
835명이 탐색했습니다.

How to Choose the Correct HSV Upper and Lower Boundaries for Accurate Color Detection in OpenCV?

cv::inRange(OpenCV)를 사용하여 색상 감지를 위한 올바른 상한 및 하한 HSV 경계 선택

OpenCV의 cv::inRange 함수에서는 HSV(Hue, 채도, 명도) 색 공간. 이렇게 하면 정확한 색상 감지가 보장되고 효율적인 분할이 가능해집니다.

문제:

커피 캔에 주황색 뚜껑이 있는 이미지가 있다고 가정해 보겠습니다. gcolor2 유틸리티를 사용하여 얻은 뚜껑 중앙의 HSV 값은 (22, 59, 100)입니다. min = (18, 40, 90) 및 max = (27, 255, 255)로 정의된 초기 경계를 사용하면 예상치 못한 탐지 결과가 발생했습니다.

해결책:

문제 1: HSV 범위 변형

다른 애플리케이션에서는 HSV 값에 대해 다른 척도를 사용하는 경우가 많습니다. 예를 들어 GIMP는 H: 0-360, S: 0-100, V: 0-100의 척도를 사용하는 반면 OpenCV는 H: 0-179, S: 0-255, V: 0-255를 사용합니다. 이 경우 김프의 색상 값 22를 OpenCV에서는 그 값의 절반을 빼서 11로 변환해야 합니다. 따라서 수정된 경계는 (5, 50, 50) - (15, 255, 255)가 됩니다.

문제 2: 색 공간 호환성

OpenCV는 BGR을 사용합니다. (청색-녹색-적색) 색상 형식이며 RGB가 아닙니다. 호환성을 보장하려면 RGB를 HSV로 변환하는 코드를 다음과 같이 수정해야 합니다.

cv.CvtColor(frame, frameHSV, cv.CV_BGR2HSV)
로그인 후 복사

업데이트된 코드:

import cv

in_image = 'kaffee.png'
out_image = 'kaffee_out.png'
out_image_thr = 'kaffee_thr.png'

ORANGE_MIN = cv.Scalar(5, 50, 50)
ORANGE_MAX = cv.Scalar(15, 255, 255)
COLOR_MIN = ORANGE_MIN
COLOR_MAX = ORANGE_MAX

def test1():
    frame = cv.LoadImage(in_image)
    frameHSV = cv.CreateImage(cv.GetSize(frame), 8, 3)
    cv.CvtColor(frame, frameHSV, cv.CV_BGR2HSV)
    frame_threshed = cv.CreateImage(cv.GetSize(frameHSV), 8, 1)
    cv.InRangeS(frameHSV, COLOR_MIN, COLOR_MAX, frame_threshed)
    cv.SaveImage(out_image_thr, frame_threshed)

if __name__ == '__main__':
    test1()
로그인 후 복사

결과:

업데이트된 코드를 실행하면 주황색이 더 정확하게 분할됩니다.

참고:

배경의 비슷한 색상으로 인해 약간의 잘못된 감지가 있을 수 있습니다. 이 문제를 해결하려면 윤곽 분석과 같은 추가 처리를 적용하여 뚜껑에 해당하는 가장 큰 윤곽을 분리할 수 있습니다.

위 내용은 OpenCV에서 정확한 색상 감지를 위해 올바른 HSV 상한 및 하한 경계를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿