비디오에서 흰색 물체를 감지하려고합니다. 첫 번째 단계는 흰색 픽셀 만 남겨 두도록 이미지를 필터링하는 것입니다. 첫 번째 접근 방식은 HSV 색상 공간을 사용하고 높은 수준의 VAL 채널을 확인하는 것이 었습니다. 코드는 다음과 같습니다.흰색을 감지하는 가장 좋은 방법은 무엇입니까?
//convert image to hsv
cvCvtColor(src, hsv, CV_BGR2HSV);
cvCvtPixToPlane(hsv, h_plane, s_plane, v_plane, 0);
for(int x=0;x<srcSize.width;x++){
for(int y=0;y<srcSize.height;y++){
uchar * hue=&((uchar*) (h_plane->imageData+h_plane->widthStep*y))[x];
uchar * sat=&((uchar*) (s_plane->imageData+s_plane->widthStep*y))[x];
uchar * val=&((uchar*) (v_plane->imageData+v_plane->widthStep*y))[x];
if((*val>170))
*hue=255;
else
*hue=0;
}
}
결과가 색조 채널에 남습니다. 불행히도이 접근법은 조명에 매우 민감합니다. 더 좋은 방법이있을 것이라고 확신합니다. 어떤 제안?
나는 흰색 = 회색 = 색상 없음을 의미합니다. 실제로 흰색 플라스틱 안경을 감지하려고합니다. 다음은 샘플 이미지입니다. http://tinypic.com/r/14t1p1x/6 – dnul
잘 모르겠지만, 내가 빨간불을 맨 위에 올려 놓으면 안경의 색이 어떻게 든 붉게됩니다. 흰색 픽셀을 찾는 대신 색상과 상관없이 비슷한 픽셀을 찾아야합니다. – dnul
장면에 흰색 물체가 있고 빨간색 표시등이 켜지면 빨간색으로 보입니다. 이 경우 '흰색'물체의 색상을 찾고 해당 색상을 검색해야합니다. –