En este artículo, la tarea es dibujar una elipse usando OpenCV en C++ . Se utilizará la función ellipse() de la biblioteca OpenCV C++.
Sintaxis:
elipse (imagen, coordenadas centrales, longitud de ejes, ángulo, ángulo inicial, ángulo final, color, grosor, tipo de línea, desplazamiento)
Parámetros:
- imagen: Es la imagen sobre la que se va a dibujar la elipse.
- centerCoordinates: Coordenadas del centro de la elipse. (Tupla de dos coordenadas (coordenada X, coordenada Y))
- axesLength: Tupla que contiene el eje mayor y menor de la elipse (longitud del eje mayor, longitud del eje menor).
- ángulo: Ángulo de rotación de la elipse en grados.
- startAngle: Ángulo inicial del arco elíptico (grados).
- endAngle: Ángulo final del arco elíptico (grados).
- color: Es el color del borde de la elipse a dibujar. Una tupla que representa 3 colores (B, G, R) , es decir, (Azul, Verde, Rojo).
- grosor: Es el grosor del borde de la elipse en px . El grosor de -1 px llenará la forma de elipse con el color especificado.
- lineType: Tipo de línea. Hay 3 tipos de línea:
- LINE_4: La línea se dibujó utilizando 4 algoritmos de Bresenham conectados.
- LINE_8: La línea se dibujó usando 8 algoritmos de Bresenham conectados.
- LINE_AA: Dibuja líneas suavizadas formadas mediante el uso de un filtro gaussiano .
- shift: Número de bits fraccionarios en las coordenadas del punto.
Valor devuelto: Devuelve una imagen.
Programa 1:
A continuación se muestra el programa C++ que demuestra cómo dibujar una elipse sobre una imagen de fondo autoformada:
C++
// C++ program to demonstrating ellipse // 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; } // Drawing the ellipse ellipse(image, Point(256, 256), Size(100, 50), 0, 0, 360, Scalar(0, 255, 255), -1, LINE_AA); // Showing image inside a window imshow("Output", image); waitKey(0); return 0; }
Producción:
Explicación: En el programa anterior, se dibuja una elipse con un ángulo de 0 grados , es decir, una elipse horizontal.
Programa 2:
A continuación se muestra el rectángulo ilustrado del programa C++ sobre una imagen cargada con una elipse alrededor del logotipo de GFG:
C++
// C++ program to demonstrate rectangle // over a loaded image with an ellipse // around the 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; } // Drawing the ellipse ellipse(image, Point(115, 110), Size(105, 55), 0, 0, 360, Scalar(0, 255, 255), 1, LINE_AA); // Show our image inside a window imshow("Output", image); waitKey(0); return 0; }
Producción:
Publicación traducida automáticamente
Artículo escrito por Captain_JackSparrow y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA