您可以使用cvCvtColor(img,imgGrayScale,CV_BGR2GRAY)
将这些图像转换为灰度图像。
然后使用cvThreshold(imgGrayScale,imgThresh,x,255,CV_THRESH_BINARY)
对其进行阈值处理。在这里,您需要找到一个适合的x值(我认为x=50就可以了)。
CvMoments *moments = (CvMoments*)malloc(sizeof(CvMoments));
cvMoments(imgThresh, moments, 1);
double moment10 = cvGetSpatialMoment(moments, 1, 0);
double moment01 = cvGetSpatialMoment(moments, 0, 1);
double area = cvGetCentralMoment(moments, 0, 0);
int x = moment10/area;
int y = moment01/area;
现在您已经知道了物块的(x.y) 坐标。然后,您可以使用
cvSetImageROI(imgThresh, cvRect(x-10, y-10, x+10, y+10))
截取图像。在这里,我假设这个物块的半径小于10个像素。
所有裁剪后的图像大小相同,白色物块(星球)正好位于图像中心。
然后,您可以使用归一化互相关来比较图片。