One way to do this would be to use a BufferedImage as your canvas, and then draw Mats directly to the BufferedImage raster somehow. You can then just clone() the canvas to take a screenshot or you can just copy the pixels for the area that is the webcam area.