C++ program to blur a video using OpenCV

In the following post, we will see how to blur a video using OpenCV C++ function blur, we will also see Gaussian blur function in the code.

Process

  • Read the video using VideoCapture.
  • Run the loop to read it frame by frame.
  • Apply blur function to each frame and display it using imshow() function.

Also read: Install OpenCV C++ with Visual Studio

blur function

Using the normalized box filter blurs an image.

C++: void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT)

Parameters:
  • src – input image name or path to the input image.
  • dst – output image.
  • ksizeblurring kernel size.
  • anchor – anchor point; default value Point(-1,-1)i.e. anchor is at the center.
  • borderType – border mode to extrapolate pixels outside the image.

Full Implementation

// author @Nishant
#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main() {
    // Read the video
    VideoCapture cap("sample.mp4");
    if (cap.isOpened() == false) {
        cout << "Cannot open the video file" << endl;
        cin.get(); //wait for any key press
        return -1;
    }
    // FPS of the video
    double fps = cap.get(CAP_PROP_FPS);
    // Window name
    string vName = "Blur Video";
    // Creating the video
    namedWindow(vName);
    while (true) {
        Mat frame;
        bool bSuccess = cap.read(frame);
        if (bSuccess == false) {
            cout << "Found the end of the video" << endl;
            break;
        }
        // To blur the image.
        // Blur the current frame and save it to same variable.
        blur(frame, frame, Size(10, 10)); 

        /* 
        Optional
        
        // Gaussian Blur saving frame of input video into
        // other frame which can be displayed using imshow
         Mat blur3x3;
         GaussianBlur(frame, blur3x3, Size(3, 3), 0);
         Mat blur5x5;
         GaussianBlur(frame, blur5x5, Size(5, 5), 0);

         */

        imshow(vName, frame);
        if (waitKey(10) == 27) {
            cout << "Esc key is pressed by user. Stoppig the video";
            cout << endl;
            break;
        }
    }
    return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *