Dibuja una línea usando OpenCV en C++

En este artículo, discutiremos cómo dibujar una línea usando OpenCV en C++ . La idea es usar la función line() de la biblioteca OpenCV C++.

Sintaxis:

línea (img, pt1, pt2, color, grosor, tipo de línea, cambio)

Parámetros:

  • img: Este es el archivo de imagen.
  • inicio: punto de inicio del segmento de línea. El primer punto de dos extremos de un segmento de línea. Es una tupla de dos coordenadas (coordenada x, coordenada y)).
  • final: punto final del segmento de línea. El segundo punto de dos extremos de un segmento de línea. Es una tupla de dos coordenadas (coordenada x, coordenada y)).
  • color: Color de la línea a dibujar. Es una tupla que representa 3 colores (B, G, R), es decir. (Azul, Verde, Rojo).
  • grosor: Grosor de la línea dibujada.
  • 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: Línea dibujada utilizando 8 algoritmos de Bresenham conectados.
    • LINE_AA: Dibuja líneas Antialias formadas usando el filtro Gaussiano .
  • nshift: Es el Número de bits fraccionarios en las coordenadas del punto.

Valor devuelto: Devuelve una imagen.

Programa 1:

A continuación se muestra el programa que muestra cómo dibujar todo tipo de líneas sobre una imagen de fondo autoformada:

C++

// C++ program for the above approach
#include <iostream>
#include <opencv2/core/core.hpp>
  
// Library to include for
// drawing shapes
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace std;
  
// Driver Code
int main(int argc, char** argv)
{
    // Create a blank image of size
    // (500 x 500) with black
    // background (B, G, R) : (0, 0, 0)
    Mat image(500, 500, CV_8UC3,
              Scalar(0, 0, 0));
  
    // Check if the image is created
    // successfully
    if (!image.data) {
        cout << "Could not open or find"
             << " the image";
  
        return 0;
    }
  
    Point p1(0, 0), p2(100, 0);
    Point p3(200, 0), p4(500, 500);
    int thickness = 2;
  
    // Line drawn using 8 connected
    // Bresenham algorithm
    line(image, p1, p4, Scalar(255, 0, 0),
         thickness, LINE_8);
  
    // Line drawn using 4 connected
    // Bresenham algorithm
    line(image, p2, p4, Scalar(0, 255, 0),
         thickness, LINE_4);
  
    // Antialiased line
    line(image, p3, p4, Scalar(0, 0, 255),
         thickness, LINE_AA);
  
    // Show our image inside window
    imshow("Output", image);
    waitKey(0);
  
    return 0;
}

Producción:

Programa 2:

A continuación se muestra el programa que muestra cómo dibujar una línea sobre una imagen cargada:

C++

// C++ program for the above approach
#include <iostream>
#include <opencv2/core/core.hpp>
  
// Library to include for
// drawing shapes
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace std;
  
// Driver code
int main(int argc, char** argv)
{
    // Path of the image file
    Mat image = imread(
        "C:/Users/harsh/Downloads/geeks.png",
        IMREAD_COLOR);
  
    // Check if the image is loaded
    // successfully
    if (!image.data) {
        std::cout << "Could not open or "
                     "find the image";
        return 0;
    }
  
    Point p1(0, 0), p2(250, 250);
    int thickness = 2;
  
    // Line drawn using 8 connected
    // Bresenham algorithm
    line(image, p1, p2, Scalar(255, 0, 0),
         thickness, LINE_8);
  
    // Show our image inside 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 *