In this chapter, we are going to learn how to convert an image into a cartoon-like image. We will learn how to access the webcam and take keyboard/mouse inputs during a live video stream. We will also learn about some advanced image filters and see how we can use them to cartoonize an image.
By the end of this chapter, you will know:
We can build very interesting applications using the live video stream from the webcam. OpenCV provides a video capture object which handles everything related to opening and closing of the webcam. All we need to do is create that object and keep reading frames from it.
The following code will open the webcam, capture the frames, scale them down by a factor of 2, and then display them in a window. You can press the Esc key to exit.
import cv2 cap = cv2.VideoCapture(0) # Check if the webcam is opened correctly if not cap.isOpened(): raise IOError("Cannot open webcam") while True: ret, frame = cap.read() frame = cv2.resize(frame, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA) cv2.imshow('Input', frame) c = cv2.waitKey(1) if c == 27: break cap.release() cv2.destroyAllWindows()
As we can see in the preceding code, we use OpenCV's VideoCapture
function to create the video capture object cap. Once it's created, we start an infinite loop and keep reading frames from the webcam until we encounter a keyboard interrupt. In the first line within the while loop, we have the following line:
ret, frame = cap.read()
Here, ret
is a Boolean value returned by the read
function, and it indicates whether or not the frame was captured successfully. If the frame is captured correctly, it's stored in the variable frame
. This loop will keep running until we press the Esc key. So we keep checking for a keyboard interrupt in the following line:
if c == 27:
As we know, the ASCII value of Esc is 27. Once we encounter it, we break the loop and release the video capture object. The line cap.release()
is important because it gracefully closes the webcam.