The following is the explanation to the C++ code to blur a video in C++ using the tool OpenCV.
Things to know:
(1) The code will only compile in Linux environment.
(2) To run in windows, please use the file: ‘blur_video.o’ and run it in cmd. However if it does not run(problem in system architecture) then compile it in windows by making suitable and obvious changes to the code like: Use <iostream.h> in place of <iostream>.
(3) Compile command: g++ Âw blur_vid.cpp Âo blur_vid `pkgÂconfig ÂÂlibs opencv`
(4) Run command: ./blur_vid
(5) The video Bumpy.mp4 has to be in the same directory as the code.
Before you run the code, please make sure that you have OpenCV installed on your // system.
Code Snippets Explained:
#include "opencv2/highgui/highgui.hpp"
// highgui - an interface to video and image capturing.
#include <opencv2/imgproc/imgproc.hpp> // For dealing with images
#include <iostream>
// The header files for performing input and output.
using namespace cv;
// Namespace where all the C++ OpenCV functionality resides.
using namespace std;
// For input output operations.
int main()
{
VideoCapture cap("Bumpy.mp4");
// cap is the object of class video capture that tries to capture Bumpy.mp4
if ( !cap.isOpened() ) // isOpened() returns true if capturing has been initialized.
{
cout << "Cannot open the video file. \n";
return -1;
}
double fps = cap.get(CV_CAP_PROP_FPS); //get the frames per seconds of the video
// The function get is used to derive a property from the element.
// Example:
// CV_CAP_PROP_POS_MSEC : Current Video capture timestamp.
// CV_CAP_PROP_POS_FRAMES : Index of the next frame.
namedWindow("A_good_name",CV_WINDOW_AUTOSIZE); //create a window called "MyVideo"
// first argument: name of the window.
// second argument: flag- types:
// WINDOW_NORMAL : The user can resize the window.
// WINDOW_AUTOSIZE : The window size is automatically adjusted to
//fit the displayed image() ), and you cannot change the window size manually.
// WINDOW_OPENGL : The window will be created with OpenGL support.
while(1)
{
Mat frame;
// Mat object is a basic image container. frame is an object of Mat.
if (!cap.read(frame)) // if not success, break loop
// read() decodes and captures the next frame.
{
cout<<"\n Cannot read the video file. \n";
break;
}
blur(frame,frame,Size(10,10)); // To blur the image.
imshow("A_good_name", frame);
// first argument: name of the window.
// second argument: image to be shown(Mat object).
if(waitKey(30) == 27) // Wait for 'esc' key press to exit
{
break;
}
}
return 0;
}
// END OF PROGRAM
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
13 Jun, 2023
Like Article
Save Article