Open In App

Draw an rectangle using OpenCV in C++

Last Updated : 19 Mar, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, the task is to draw an rectangle using OpenCV in C++. The rectangle() function from OpenCV C++ library will be used.

Syntax:

rectangle( img, pt1, pt2, color, thickness, line Type, shift)

Parameters:

  • image: It is the image on which the rectangle is to be drawn.
  • start(pt1): It is the top left corner of the rectangle represented as the tuple of two coordinates i.e., (x-coordinate, y-coordinate).
  • end(pt2): It is the bottom right corner of the rectangle represented as the tuple of two coordinates i.e., (x-coordinate, y-coordinate).
  • color: It is the color of the borderline of the rectangle to be drawn. A tuple representing 3 colors (B, G, R) i.e., (Blue, Green, Red).
  • thickness: It is the thickness of the rectangle borderline in px. The thickness of -1 px will fill the rectangle shape by the specified color.
  • lineType: Type of the line. There are 3 types of line:
    • LINE_4: Line was drawn using 4 connected Bresenham algorithm.
    • LINE_8: Line was drawn using 8 connected Bresenham algorithm.
    • LINE_AA: It draws Anti-aliased lines formed by using a Gaussian filter.
  • shift: The number of fractional bits in the point coordinates.

Return Value: It returns an image.

Program 1:

Below is the C++ program demonstrating how to draw a rectangle over a self-formed background image:

C++




// C++ program to demonstrate rectangle
// over a self-formed background image
  
#include <iostream>
#include <opencv2/core/core.hpp>
  
// Drawing shapes
#include <opencv2/imgproc.hpp>
  
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
  
// Driver Code
int main(int argc, char** argv)
{
    // Creating a blank image with
    // white background
    Mat image(500, 500, CV_8UC3,
              Scalar(255, 255, 255));
  
    // Check if the image is created
    // successfully or not
    if (!image.data) {
        std::cout << "Could not open or "
                  << "find the image\n";
  
        return 0;
    }
  
    // Top Left Corner
    Point p1(30, 30);
  
    // Bottom Right Corner
    Point p2(255, 255);
  
    int thickness = 2;
  
    // Drawing the Rectangle
    rectangle(image, p1, p2,
              Scalar(255, 0, 0),
              thickness, LINE_8);
  
    // Show our image inside a window
    imshow("Output", image);
    waitKey(0);
  
    return 0;
}


Output:

Program 2:

Below is the C++ program demonstrating how to draw a rectangle over the image of the GFG Logo:

C++




// C++ program to demonstrate rectangle
// over a loaded image of GFG logo
  
#include <iostream>
#include <opencv2/core/core.hpp>
  
// Drawing shapes
#include <opencv2/imgproc.hpp>
  
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
  
// Driver Code
int main(int argc, char** argv)
{
    // Reading the Image
    Mat image = imread("C:/Users/harsh/Downloads/geeks.png",
                       IMREAD_COLOR);
  
    // Check if the image is created
    // successfully or not
    if (!image.data) {
        std::cout << "Could not open or "
                  << "find the image\n";
        return 0;
    }
  
    // Top Left Coordinates
    Point p1(30, 70);
  
    // Bottom Right Coordinates
    Point p2(115, 155);
  
    int thickness = 2;
  
    // Drawing the Rectangle
    rectangle(image, p1, p2,
              Scalar(255, 0, 0),
              thickness, LINE_8);
  
    // Show our image inside a window
    imshow("Output", image);
    waitKey(0);
  
    return 0;
}


Output:

Program 3:

Below is the C++ program demonstrating how to draw a rectangle filled with color:

C++




// C++ program to demonstrate rectangle
// filled with any color
  
#include <iostream>
#include <opencv2/core/core.hpp>
  
// Drawing shapes
#include <opencv2/imgproc.hpp>
  
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
  
// Driver Code
int main(int argc, char** argv)
{
    // Creating a blank image with
    // white background
    Mat image(500, 500, CV_8UC3,
              Scalar(255, 255, 255));
  
    // Check if the image is created
    // successfully or not
    if (!image.data) {
        std::cout << "Could not open or "
                  << "find the image\n";
  
        return 0;
    }
  
    // Top Left Corner
    Point p1(30, 30);
  
    // Bottom Right Corner
    Point p2(255, 255);
  
    int thickness = -1;
  
    // Drawing the Rectangle
    rectangle(image, p1, p2,
              Scalar(0, 255, 0),
              thickness, LINE_8);
  
    // Show our image inside a window
    imshow("Output", image);
    waitKey(0);
  
    return 0;
}


Output:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads