morfología Ex morfología

La morfología puede operar sobre imágenes binarias, como si también pudiera operar sobre imágenes en escala de grises, y se devuelven las imágenes en escala de grises.

La función morfologíaEx se puede utilizar para realizar cómodamente una serie de combinaciones de dilatación y corrosión en la imagen.

Explicación de la función

● Prototipo de función
○ c ++

 

void morphologyEx( InputArray src, OutputArray dst,
                                int op, InputArray kernel,
                                Point anchor = Point(-1,-1), int iterations = 1,
                                int borderType = BORDER_CONSTANT,
                                const Scalar& borderValue = morphologyDefaultBorderValue() )

○ Android

 

void morphologyEx(Mat src, Mat dst, int op, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)

● Explicación del parámetro
○ src: imagen de origen Objeto Mat
○ dst: imagen de destino Objeto Mat
○ op: tipo de operación, a través del código fuente sabemos que hay un total de los siguientes tipos:

 

enum MorphTypes{
    MORPH_ERODE    = 0, //腐蚀
    MORPH_DILATE   = 1, //膨胀
    MORPH_OPEN     = 2, //开操作
    MORPH_CLOSE    = 3, //闭操作
    MORPH_GRADIENT = 4, //梯度操作
    MORPH_TOPHAT   = 5, //顶帽操作
    MORPH_BLACKHAT = 6, //黑帽操作
    MORPH_HITMISS  = 7  
};

○ kernel: El elemento de estructura usado para la operación de expansión. Si el valor es Mat (), entonces se usa un elemento de estructura cuadrado de 3 x 3 por defecto . Puede usar getStructuringElement () para crear elementos de estructura
. (-1, -1) indica que está ubicado en el centro del kernel.
○ borderType: tipo de borde, el valor predeterminado es BORDER_CONSTANT.
○ borderValue: valor de borde, solo use su valor predeterminado.

Efectos de varias operaciones

● MORPH_ERODE (corrosión)
con erosión (corrosión) en función del efecto
● MORPH_DILATE (expansión)
con función dilatar (hinchamiento) el mismo efecto
● MORPH_OPEN (abierto)
realmente es la corrosión interna que se expandió después de la primera operación.

 

Imagen de origen

 

Imagen después de la operación


● MORPH_CLOSE (cerrado)
es en realidad la operación de expandirse primero y luego corroerse por dentro.

 

Imagen de origen

 

Imagen después de la operación


● MORPH_GRADIENT (gradiente)
interno es expansión menos corrosión

 

Imagen de origen

 

Imagen después de la operación


● MORPH_TOPHAT (sombrero de copa)

 

Imagen de origen

 

Imagen después de la operación


● MORPH_BLACKHAT (sombrero negro)

 

Imagen de origen

 

Imagen después de la operación

Uso de funciones

● c ++

 

#include<opencv2/opencv.hpp>
using namespace cv;
int main() {
    Mat src = imread("C:/Users/Administrator/Desktop/wan.png");//引入源图像
    if (src.empty()) {
        return -1;
    }
    imshow("src", src);//展示源图像
    Mat dst;
    Mat kernel = getStructuringElement(MORPH_RECT,Size(3,3));//创建结构元素大小为3*3
    morphologyEx(src, dst,MORPH_OPEN, kernel);//开操作
    imshow("dst", dst);//展示目标图像
    waitKey(0);
    return 0;
}

● Android

 

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_beauty);//获取源图像Bitmap对象
Mat src = new Mat();
Mat dst = new Mat();
Utils.bitmapToMat(bitmap,src);//Bitmap转换为Mat对象
Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3));//获取结构元素
Imgproc.morphologyEx(src,dst,Imgproc.MORPH_OPEN,kernel);//开操作
Utils.matToBitmap(dst,bitmap);//Mat转换为Bitmap对象
imageView.setImageBitmap(bitmap);



Autor:
enlace de itfitness : https: //www.jianshu.com/p/ee72f5215e07
Fuente: Los libros de Jane
tienen derechos de autor del autor. Para reimpresiones comerciales, comuníquese con el autor para obtener autorización, y para reimpresiones no comerciales, indique la fuente.

Supongo que te gusta

Origin blog.csdn.net/jacke121/article/details/115220106
Recomendado
Clasificación