The way you mentioned will be too tedious to get your job done. there is nothing called double buffering, even if you do it via python, the huge amount of video data will be overwhelming your software.
You have a hardware alternative to get it done, by using a suitable capture card, by which you can overlap your original video with graphics/text or effects (just like they do on TV live). It will be bit expensive, but thats a standard solution.
The below card is a starting point. http://www.bhphotovideo.com/c/product/598248-REG/Blackmagic_Design_BDLKSDI_DeckLink_SDI_PCI_Express.html
complete range of products. http://www.blackmagicdesign.com/in/products/decklink
choose whichone fits your budget. Once you have the card, you can use the software which ships with your card or any third party tool to apply filters.
If you want even a custom tailored solution, you can use the video stream from the card and manipulate it on the fly with C++/C# API libraries available from http://www.blackmagicdesign.com/support/sdks/
Even better SDK's there from thirdparties. http://www.medialooks.com/mplatform/
If you want a 'software only' means, "ManyCam" (google for it) can get it done.