2013-05-15 5 views
0

함수 cvCvtColor()를 사용하여 RGB 이미지를 HSV로 변환하려고하지만 결과가 예상치 않게됩니다. 예를 들어 흰색은 빨간색에 가까운 것으로 변환됩니다.cvCvtColor() 문제로 HSV 변환

 cvCvtColor(img, hsv, CV_BGR2HSV); 
     cvSplit(hsv, h, s, v, NULL); 
     cvInRangeS(h,cvScalar(0,0,0,0),cvScalar(20,0,0,0),imgthresh); 
     cvShowImage("image", img); 
     cvShowImage("hsv", hsv); 
     cvShowImage("threshold", imgthresh); 

이미지가 올바르게 변환 되었습니까? 임계 값에 관해서는 더 나은 방법은 3 개의 채널 또는 색조 만 사용하는 것입니까? 빨간색 개체를 추적하고 싶습니다. 영어에 대해 죄송합니다. 감사합니다. .

답변

3

cvShowImage는 항상 RGB 값을 기대합니다 (또는 BGR, 확실하지 않습니다). 따라서 HSV로 변환하면 색상이 다르게 표시 될 것으로 예상됩니다. 이 rgb to hsv conversor을 사용하면 HSV에서 (255,255,255) -로 표시된 RGB의 흰색이 (0,0,100 %)로 변환됨을 알 수 있습니다. 표시되는 흰색의 색이 빨간색이라고 말하면서 cvShowImage가 기본적으로 BGR을 실제로 기대하고 있다고 생각합니다.

+2

'cvShowImage()'와'cv :: imshow()'는 BGR 채널 순서를 예상합니다. – Aurelius