我試圖檢測視頻中的白色物體。第一步是過濾圖像,使其僅保留白色像素。我的第一種方法是使用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 2010-06-17 21:11:37
我不確定,你是說如果我在頂部放一盞紅燈,那麼眼鏡的顏色會變成某種偏紅色而不是尋找白色像素,我應該尋找類似的像素,無論顏色? – dnul 2010-06-17 23:32:52
如果你在場景中有白色物體,並用紅光點亮它們,它們將看起來紅色!在這種情況下,您將不得不查找「白色」對象的顏色並搜索該顏色 – 2010-06-18 00:02:46