Нарисуйте прямоугольник, используя OpenCV в С++

Опубликовано: 14 Сентября, 2022

В этой статье задача — нарисовать прямоугольник с помощью OpenCV на C++. Будет использоваться функция прямоугольника() из библиотеки OpenCV C++.

Синтаксис:

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

Параметры:

  • image: Это изображение, на котором должен быть нарисован прямоугольник.
  • start(pt1): это верхний левый угол прямоугольника, представленный кортежем из двух координат, т.е. (координата x, координата y).
  • end(pt2): Это нижний правый угол прямоугольника, представленный как кортеж из двух координат, т.е. (координата x, координата y).
  • цвет: это цвет границы прямоугольника, который нужно нарисовать. Кортеж, представляющий 3 цвета (B, G, R) , то есть (синий, зеленый, красный).
  • толщина: толщина границы прямоугольника в пикселях . Толщина -1 px заполнит прямоугольник указанным цветом.
  • lineType: тип линии. Существует 3 типа линии:
    • LINE_4: линия нарисована с использованием алгоритма Брезенхэма с 4 связями.
    • LINE_8: линия нарисована с использованием 8-связного алгоритма Брезенхэма.
    • LINE_AA: рисует линии со сглаживанием, сформированные с помощью фильтра Гаусса.
  • сдвиг: количество дробных битов в координатах точки.

Возвращаемое значение: возвращает изображение.

Программа 1:

Ниже приведена программа на C++, демонстрирующая, как нарисовать прямоугольник поверх самоформируемого фонового изображения:

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 ";
  
        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;
}

Выход:

Программа 2:

Ниже приведена программа на C++, демонстрирующая, как нарисовать прямоугольник поверх изображения логотипа GFG:

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 ";
        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;
}

Выход:

Программа 3:

Ниже приведена программа на C++, демонстрирующая, как нарисовать прямоугольник, заполненный цветом:

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 ";
  
        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;
}

Выход: