Processing the video frames
In this recipe, our objective is to apply some processing function to each of the frames of a video sequence. We will do this by encapsulating the OpenCV video capture framework into our own class. Among other things, this class will allow us to specify a function that will be called each time a new frame is extracted.
How to do it...
What we want is to be able to specify a processing function (a callback function) that will be called for each frame of a video sequence. This function can be defined as receiving a cv::Mat
instance and outputting a processed frame. Therefore, in our framework, the processing function must have the following signature to be a valid callback:
void processFrame(cv::Mat& img, cv::Mat& out);
As an example of such a processing function, consider the following simple function that computes the Canny edges of an input image:
void canny(cv::Mat& img, cv::Mat& out) { // Convert to gray if (img.channels()==3) cv::cvtColor...