Cierre | Transformaciones morfológicas en OpenCV en C++

En este artículo se discute una Operación Morfológica llamada Cierre .

  • Ayuda a reducir el ruido interno presente dentro de una imagen.
  • En este artículo se elabora otro operador llamado cierre que es justo lo contrario de Apertura y aplica dilatación seguida de erosión .
  • Al igual que el operador Apertura, también utiliza un elemento estructurante, pero se utiliza para eliminar pequeños agujeros en lugar de pertusiones.

Sintaxis:

morphologyEx (src, dst, op, kernel, ancla, iteraciones, borderType, borderValue)

Parámetros:

  • src: Es la imagen de entrada.
  • dst: Es la imagen de salida.
  • op: Tipo de operación morfológica.
  • Núcleo: Elemento estructurante utilizado para el Cierre.
  • ancla: Posición del ancla en el interior del elemento estructurante. El valor predeterminado es [-1, -1} que significa posición como el centro del elemento de estructuración.
  • iteraciones: Número de veces que se aplica Closing.
  • borderType: Tipo de borde ( BORDER_CONSTANT, BORDER_REPLICATE, etc.)
  • borderValue: valor del borde
  • Devolución: imagen de salida (objeto Mat)

La operación de cierre viene dada por la expresión:

  • La expresión representa el hecho de que A es una subimagen de A. B. _
  • Este operador se utiliza para eliminar pequeños agujeros de la imagen.
  • También ayuda a suavizar los contornos y la fusión de grietas estrechas y golfos largos y delgados.

A continuación se muestra el programa que demuestra el Operador Morfológico de Cierre:

C++

// C++ program for demonstrating the
// closing morphological operator
  
// For drawing shapes
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace std;
  
// Function to demonstrate the
// closing morphological operator
void closingMorphological()
{
    // Reading the Image
    Mat image = imread(
        "C:/Users/harsh/Downloads/geeks.png",
        IMREAD_GRAYSCALE);
  
    // Check if the image is
    // created successfully
    if (!image.data) {
        cout << "Could not open or "
             << "find the image\n";
        return 0;
    }
  
    int morph_size = 2;
  
    // Create structuring element
    Mat element = getStructuringElement(
        MORPH_RECT,
        Size(2 * morph_size + 1,
             2 * morph_size + 1),
        Point(morph_size, morph_size));
    Mat output;
  
    // Closing
    morphologyEx(image, output,
                 MORPH_CLOSE, element,
                 Point(-1, -1), 2);
  
    // Displays the source and
    // the closing image formed
    imshow("source", image);
    imshow("Closing", output);
    waitKey();
}
  
// Driver Code
int main(int argc, char** argv)
{
    // Function Call
    closingMorphological();
  
    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 *