The first light came from Joseph Perla's blog. He gave an example which worked fine on my Ubuntu 10.04. I post the example with minor modifications (using ImageOps.mirror to flip the image horizontally) as the follows.
import pygame import Image import ImageOps from pygame.locals import * import sys import opencv from opencv import highgui camera = highgui.cvCreateCameraCapture(0) def get_image(): im = highgui.cvQueryFrame(camera) return ImageOps.mirror(opencv.adaptors.Ipl2PIL(im)) pygame.init() window = pygame.display.set_mode((640,480)) pygame.display.set_caption("WebCam Demo") screen = pygame.display.get_surface() while True: events = pygame.event.get() for event in events: if event.type == QUIT or event.type == KEYDOWN: highgui.cvReleaseCapture(camera) # I add this, but don't know whether it is necessary sys.exit(0) im = get_image() pg_img = pygame.image.frombuffer(im.tostring(), im.size, im.mode) screen.blit(pg_img, (0,0)) pygame.display.flip()
The example remind me about pygame, which I found but had not given further attention to. I don't know the role of pygame in webcam applications so far, but I do know it works with OpenCV on my system. I would keep on studying more about it.
In addition to Joseph's example code, I also found pycam, again. This time it is found on the pygame webpage. I've tested pycam's examples roughly in my previous post when I didn't notice that it utilizes pygame modules.
My summary is: to capture and to show the webcam's image in real-time on Ubuntu, use Python, OpenCV, and pygame.
For me, the next step will be learning how to apply OpenCV functions to do some image processing on the webcam's image.