We present a real-time user-independent computer vision system that processes a sequence of images of a front-facing human face and recognises a set of facial expressions at 30 fps. We track the face using an efficient appearance-based face tracker. We model changes in illumination with a userindependent appearance-based model. In our approach to facial expression classification, the image of a face is represented by a low dimensional vector that results from projecting the illumination corrected image onto a low dimensional expression manifold. In the experiments conducted we show that the system is able to recognise facial expressions in image sequences with large facial motion and illumination changes.