本次来我们用opencv来实现识别跟踪蓝色物体并返回位置坐标的功能。
该功能分为两部分,识别颜色,跟踪颜色。
要想实现颜色的识别,我们要打开摄像头,读取捕获的图像。将图像的颜色通道转化为HSV,设置选取的特定颜色的参数。使用inRange函数将图像转变为二值图,其中蓝色部分显示为白色,其余为黑色。
代码:
VideoCapture cap(0);//打开摄像头
if ( !cap.isOpened() )
{
cout << "Cannot open the camera" << endl;
return -1;
}
int iLowH = 100; int iHighH = 140; int iLowS = 90; int iHighS = 255; int iLowV = 90; int iHighV = 255;//设置蓝色的颜色参量。
Mat imgOriginal; bool bSuccess = cap.read(imgOriginal); if (!bSuccess) { cout << "Cannot read a frame from video stream" << endl; break; } Mat imgHSV; vectorhsvSplit;
cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV); //因为我们读取的是彩色图,直方图均衡化需要在HSV空间做
split(imgHSV, hsvSplit);
equalizeHist(hsvSplit[2],hsvSplit[2]);
merge(