As you may have read, each iteration of EM has two steps. an expectation step and a maximization step. At each expectation step, we have an increasingly refined idea of how much does each training sample belong to each cluster. Using this estimate, in the maximization step, we calculate the parameters of the GMM which maximizes the likelihood. pi_k is one of the thusly calculated parameters in the maximization step. So pi_k is re-evaluated at every iteration.
Using the opencv implementation of EM, if 'em_model' is your EM-model, and if it has been trained,
Mat weights = em_model.get<Mat>("weights");
will give you the values of pi_k.