Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

A video is just a stream of images usually called frames. All you can do on images you can do on video frames.

Reading your question I suppose you will find useful some clarification about video, would you apologize me if I'm wrong.

Consideration should be done about timing, especially when your video is coming from a real time source like cameras.

In a few word, with video stream you have to consider that processing on a frame should terminate before of next frame is come.

Using buffering, threads, queues you can relax a bit and say that: the average processing time should be less than receiving frame rate.

You can choose to process only last frame received or process any frame from the stream. It's up to you to decide if frame lost is acceptable ! as is your choice to use FIFO or LIFO frame processing.

If your application is time critical, you have to consider also the general load of your system because the frame processing time depends from it too. If your computer runs just only your application, frame processing time is totally under your control. But if your computer hosts other critical or intensive application you might have same unpredictable short latency in your control loop.

Another question to be considered is User Interface. In real video application you need thread behind your GUI and this might a bit hard (not so hard) if you are newbie...

Finally a video is not just a stream of images, you can consider it a dynamic scene system where the video is like a plot chart and each frame is like a point in the chart. For example subtracting two consecutive frame is like calculate a first derivative of your scene and you will catch motion. Motion calculation is basic for video compression ...1hr of static video could be stored using 1st frame + 1 integer for duration.

This is just a single bit of information about video processing..I hope you will find useful