Нарисуйте прямоугольник, используя 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; } |
Выход: