1. 系统简介
使用普通USB相机,对Camera视野范围内特定颜色的物体进行检测与跟踪。首先,将相机获取的图像从RGB空间转换到HSV空间。然后,通过调整HSV空间各通道的阈值,生成二值化图像,并找出图像中存在的物体轮廓,从而检测出符合指定颜色特征的目标物体并进行跟踪。通过滤除面积过小和过大的物体,可仅对大小合适的物体进行分析。该系统可同时针对多个物体进行轮廓检测与跟踪,同时,不仅可以检测规则形状的物体,对于不规则物体也能实现较好的检测结果。该算法的不足是仅基于颜色进行分析判断,没有结合几何形状或样本学习等技术手段,对视野范围内符合颜色特征的所有物体均视为一类,因此,存在一定的应用局限性。
该系统实现的功能:
(1) 多目标物体的形状(轮廓)检测
(2) 物体质心位置计算与标注
(3) 物体位置实时跟踪
2. 开发环境说明
硬件:普通USB相机,分辨率640*480,ThinkPad笔记本电脑
软件:Win7 64 Bit+ VS 2013+OpenCV2.4.9
3. 系统算法实现流程
4. 部分源代码
while(1){
//store image to matrix
capture.read(cameraFeed);
src = cameraFeed;
if( !src.data )
{ return -1; }
//将图像从RGB空间转换到HSV空间
cvtColor(cameraFeed,HSV,COLOR_BGR2HSV);
if(calibrationMode==true){
inRange(HSV,Scalar(H_MIN,S_MIN,V_MIN),Scalar(H_MAX,S_MAX,V_MAX),threshold);
morphOps(threshold);
imshow(windowName2,threshold);
dst.create( src.size(), src.type() );
/// Convert the image to grayscale
cvtColor( src, src_gray, CV_BGR2GRAY );
/// Create a window
namedWindow( window_name, CV_WINDOW_AUTOSIZE );
/// Create a Trackbar for user to enter threshold
createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold);
/// Show the image
trackFilteredObject(threshold,HSV,cameraFeed);
}
}
5. 跟踪结果
图1 苹果检测与跟踪结果
图2 U盘检测与跟踪结果