Python – Process images of a video using OpenCV
Last Updated :
10 Apr, 2023
Processing a video means, performing operations on the video frame by frame. Frames are nothing but just the particular instance of the video in a single point of time. We may have multiple frames even in a single second. Frames can be treated as similar to an image.
So, whatever operations we can perform on images can be performed on frames as well. Let us see some of the operations with examples.
Adaptive Threshold –
By using this technique we can apply thresholding on small regions of the frame. So the collective value will be different for the whole frame.
Python3
import cv2
import numpy as np
cap = cv2.VideoCapture( 'sample.mp4' )
while (cap.isOpened()):
ret, frame = cap.read()
frame = cv2.resize(frame, ( 540 , 380 ), fx = 0 , fy = 0 ,
interpolation = cv2.INTER_CUBIC)
cv2.imshow( 'Frame' , frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
Thresh = cv2.adaptiveThreshold(gray, 255 , cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY_INV, 11 , 2 )
cv2.imshow( 'Thresh' , Thresh)
if cv2.waitKey( 25 ) & 0xFF = = ord ( 'q' ):
break
cap.release()
cv2.destroyAllWindows()
|
Output:
Smoothing –
Smoothing a video means removing the sharpness of the video and providing a blurriness to the video. There are various methods for smoothing such as cv2.Gaussianblur(), cv2.medianBlur(), cv2.bilateralFilter(). For our purpose, we are going to use cv2.Gaussianblur().
Python3
import cv2
import numpy as np
cap = cv2.VideoCapture( 'sample.mp4' )
while (cap.isOpened()):
ret, frame = cap.read()
frame = cv2.resize(frame, ( 540 , 380 ), fx = 0 , fy = 0 ,
interpolation = cv2.INTER_CUBIC)
cv2.imshow( 'Frame' , frame)
gaussianblur = cv2.GaussianBlur(frame, ( 5 , 5 ), 0 )
cv2.imshow( 'gblur' , gaussianblur)
if cv2.waitKey( 25 ) & 0xFF = = ord ( 'q' ):
break
cap.release()
cv2.destroyAllWindows()
|
Output:
Edge Detection –
Edge detection is a useful technique to detect the edges of surfaces and objects in the video. Edge detection involves the following steps:
- Noise reduction
- Gradient calculation
- Non-maximum suppression
- Double threshold
- Edge tracking by hysteresis
Python3
import cv2
import numpy as np
cap = cv2.VideoCapture( 'sample.mp4' )
while (cap.isOpened()):
ret, frame = cap.read()
frame = cv2.resize(frame, ( 540 , 380 ), fx = 0 , fy = 0 ,
interpolation = cv2.INTER_CUBIC)
cv2.imshow( 'Frame' , frame)
edge_detect = cv2.Canny(frame, 100 , 200 )
cv2.imshow( 'Edge detect' , edge_detect)
if cv2.waitKey( 25 ) & 0xFF = = ord ( 'q' ):
break
cap.release()
cv2.destroyAllWindows()
|
Output:
Bitwise Operations –
Bitwise operations are useful to mask different frames of a video together. Bitwise operations are just like we have studied in the classroom such as AND, OR, NOT, XOR.
Python3
import cv2
import numpy as np
cap = cv2.VideoCapture( 'sample.mp4' )
while (cap.isOpened()):
ret, frame = cap.read()
frame = cv2.resize(frame, ( 540 , 380 ), fx = 0 , fy = 0 ,
interpolation = cv2.INTER_CUBIC)
cv2.imshow( 'Frame' , frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
_, mask = cv2.threshold(gray, 0 , 255 , cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
BIT = cv2.bitwise_not(frame, frame, mask = mask)
cv2.imshow( 'BIT' , BIT)
if cv2.waitKey( 25 ) & 0xFF = = ord ( 'q' ):
break
cap.release()
cv2.destroyAllWindows()
|
Output:
We can perform any other operations according to our needs. These are just few basic operations that are mostly used.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...