我正在尝试在视频中检测白色物体。第一步是过滤图像,使其只保留白色像素。我的第一种方法是使用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;
}
}
将结果留在色调通道中。不幸的是,这种方法对光线非常敏感。我相信有更好的方法。有什么建议吗?