In the definition of the openCv calcCovMatrix there is a variable that is not being explicitly considered called "scale". Matlab evaluates E[(x-mu)(x-mu)'] so it must be dividing by nSmaples-1=3-1=2 (one can prove that dividing by nSamples-1 instead of nSamples this estimator is not biased - this does not make any real difference when nSamples grows) . On the other hand, openCv treats this differently and it depends on the flag.
UPDATE: Matlab also scales with the number of samples, but it is not the default. This is not the default, because as I told before it is not unbiased. So if you want to scale as the same way of matlab, you can use the option that changes the scale CV_COVAR_SCALE provided by @AldurDisciple and multiply by (nSamples)/(nSample-1) or just divide by (nSamples-1). However, it is very common as well to divide by nSamples since this is not a very serious problem, because usually nSamples is large and the difference between 1/nSamples and 1/(nSamples-1) is really small.