Dibuja una elipse usando OpenCV en C++

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *