As HighVoltage already suggested this should be an easy task using the HSV spectrum.
Your code could look something like this:
// img is a Mat containing your image
// Convert your image into HSV
Mat imgHSV = img.clone();
cvtColor(img, imgHSV, CV_BGR2HSV);
// Blur to reduce noise
blur(imgHSV, imgHSV, Size(3,3), Point(-1,-1));
// Threshold image to only accept a certain saturation
inRange(imgHSV, Scalar(0, 127, 0), Scalar(255, 255, 255)), imgHSV);
// If you have to much noise you can erode and dilate at this point
// Find contours in your image
vector<vector<Point> > contours;
findContours(imgHSV, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
The contours contain a list of a list of points, each inner list represents the contour of one object.
You can for example use contourArea(contour[n]) to get the area of the nth contour.