OpenCV comes with a default implementation of the watershed algorithm. It's pretty famous and there are a lot of implementations available out there. You can read more about it at http://docs.opencv.org/master/d3/db4/tutorial_py_watershed.html. Since you already have access to the OpenCV source code, we will not be looking at the code here.
We will just see what the output looks like. Consider the following image:
Let's select the regions:
If you run the watershed algorithm on this, the output will look something like the following: ...