Draw an rectangle using OpenCV in C++
Last Updated :
19 Mar, 2021
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++
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main( int argc, char ** argv)
{
Mat image(500, 500, CV_8UC3,
Scalar(255, 255, 255));
if (!image.data) {
std::cout << "Could not open or "
<< "find the image\n" ;
return 0;
}
Point p1(30, 30);
Point p2(255, 255);
int thickness = 2;
rectangle(image, p1, p2,
Scalar(255, 0, 0),
thickness, LINE_8);
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++
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main( int argc, char ** argv)
{
Mat image = imread( "C:/Users/harsh/Downloads/geeks.png" ,
IMREAD_COLOR);
if (!image.data) {
std::cout << "Could not open or "
<< "find the image\n" ;
return 0;
}
Point p1(30, 70);
Point p2(115, 155);
int thickness = 2;
rectangle(image, p1, p2,
Scalar(255, 0, 0),
thickness, LINE_8);
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++
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main( int argc, char ** argv)
{
Mat image(500, 500, CV_8UC3,
Scalar(255, 255, 255));
if (!image.data) {
std::cout << "Could not open or "
<< "find the image\n" ;
return 0;
}
Point p1(30, 30);
Point p2(255, 255);
int thickness = -1;
rectangle(image, p1, p2,
Scalar(0, 255, 0),
thickness, LINE_8);
imshow( "Output" , image);
waitKey(0);
return 0;
}
|
Output:
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...