Click response on video output using Events in OpenCV – Python
Last Updated :
01 Dec, 2022
OpenCV is a computer vision library that contains various functions to perform operations on Images or videos. OpenCV library can be used to perform multiple operations on videos.
In this article, we will create a program with a click response on video output using events in OpenCV Python library. We will be using “cv2.EVENT_LBUTTONDOWN” in case whenever the left mouse button is clicked and “cv2.EVENT_RBUTTONDOWN” in case whenever the Right mouse button is clicked.
To use the OpenCV library in python, we need to install these libraries as a prerequisite:
- Numpy Library: The computer processes images in the form of a matrix for which NumPy is used and OpenCV uses it in the background.
- OpenCV library: OpenCV library previously it was cv but the updated version is cv2. It is used to manipulate images and videos.
To install these libraries, we need to run these pip commands in cmd:
pip install opencv-python
pip install numpy
The steps to read, display video and add click response on video output in OpenCV are:
Step 1: Import the required modules
Step 2: Create the object of the VideoCapture to read the input file
cv2.VideoCapture(0): For the first camera or webcam.
cv2.VideoCapture(1): For the second camera or webcam.
cv2.VideoCapture(“file name.mp4”): For video file
Python3
cap = cv2.VideoCapture( "test.mp4" )
|
Step 3: Check if the input file is opened or not
cap.isOpened() : It returns True or False based on whether or not our cap object has started capturing the frames.
Python3
if cap.isOpened() = = False :
print ( "Error in opening file." )
else :
|
Step 4: Entire file is read frame by frame and set mouse Callback function
cv2.waitkey(): This function of OpenCV allows users to display a window for given milliseconds or until any key is pressed. It takes time in milliseconds as a parameter and waits for the given time to destroy the window, if 0 is passed in the argument it waits till any key is pressed.
cap.read(): This function returns 2 values:-
- ret: This is a boolean value that is true if the frame is read successfully
- frame: This is the actual frame that is read.
Parameters:
window_name: A string representing the name of the window in which image to be displayed.
image: It is the image or frame that is to be displayed.
Return Value: It doesn’t returns anything.
Python3
while (cap.isOpened()):
ret,frame = cap.read()
if ret = = True :
cv2.imshow( "GFG" ,frame)
cv2.setMouseCallback( 'GFG' , mouse_click,param = frame)
if cv2.waitKey( 25 ) & 0xFF = = ord ( 'q' ):
break
else :
break
|
Python3
def mouse_click(event, x, y, flags, param):
if event = = cv2.EVENT_LBUTTONDOWN:
print ( "left click" )
cv2.imwrite( "frame.jpg" ,param)
if event = = cv2.EVENT_RBUTTONDOWN:
print ( "right click" )
cv2.imshow( "Current Frame" ,frame)
|
Below is the complete implementation
Python3
import cv2
def mouse_click(event, x, y, flags, param):
if event = = cv2.EVENT_LBUTTONDOWN:
print ( "left click" )
cv2.imwrite( "frame.jpg" , param)
if event = = cv2.EVENT_RBUTTONDOWN:
print ( "right click" )
cv2.imshow( "Current Frame" , frame)
cap = cv2.VideoCapture( "test.mp4" )
if cap.isOpened() = = False :
print ( "Error in opening file." )
else :
while (cap.isOpened()):
ret, frame = cap.read()
if ret = = True :
cv2.imshow( "GFG" , frame)
cv2.setMouseCallback( 'GFG' , mouse_click, param = frame)
if cv2.waitKey( 25 ) & 0xFF = = ord ( 'q' ):
break
else :
break
cap.release()
cv2.destroyAllWindows()
|
Output:
Note: Video file should have in the same directory where program is executed.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...