Lectura y escritura de imágenes basadas en opencv y operaciones morfológicas

Lectura y escritura de imágenes

Utilice la clase Mat para guardar imágenes que deben leerse y escribirse. La clase Mat es una estructura de datos que se utiliza para guardar imágenes y otros datos matriciales

La función imread () se usa para leer la imagen en el archivo a OpenCV, la descripción es la siguiente:
Mat imread (const string & filename, intflags = 1); El
primer parámetro, const string & type filename, complete la ruta de la imagen que necesitamos cargar Name, en el sistema operativo Windows, la función imread de OpenCV admite los siguientes tipos de carga de imágenes.
El segundo parámetro, banderas de tipo int, es la bandera de carga, que especifica el tipo de color de la imagen cargada

La función imshow () se utiliza para mostrar una imagen en la ventana especificada. El prototipo de la función es el siguiente.
void imshow (const string & winname, InputArray mat); El
primer parámetro, const string & type winname, complete el nombre de identificación de la ventana que se mostrará.
El segundo parámetro, tapete de tipo InputArray, completa la imagen que se mostrará.

La función imwrite se usa para generar una imagen en un archivo, y su declaración es la siguiente:
bool imwrite (const String & filename, InputArray img, const std :: vector & params = std :: vector ()); el
primer parámetro const String & filename indica lo que se debe escribir El nombre del archivo debe tener un sufijo, como "123.png".
El segundo parámetro InputArray img representa los datos de imagen del tipo Mat.

	Mat image = imread("E:\\picture\\lena.jpg");
	imshow("原始图", image);
	imwrite("E:\\picture\\lenaout.jpg", image);
	waitKey(0);

Inserte la descripción de la imagen aquí

Operación morfológica

Operación de corrosión:
Como su nombre indica, es para corroer los bordes de los objetos. El método de operación específico es tomar un rectángulo con ancho my alto n como plantilla, y hacer el siguiente procesamiento para cada píxel x en la imagen: el píxel x está en el centro de la plantilla, según el tamaño de la plantilla, atraviesa todos los demás píxeles cubiertos por la plantilla, Modifique el valor de píxel x para que sea el valor más pequeño entre todos los píxeles. El resultado de esta operación es corroer los puntos prominentes en la periferia de la imagen. El proceso de operación como se muestra a continuación:
  Inserte la descripción de la imagen aquí

	Mat image = imread("E:\\picture\\lena.jpg");
	imshow("原始图", image);

	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dstimg;
	erode(image, dstimg, element);
	imshow("腐蚀", dstimg);

	imwrite("E:\\picture\\lenaout.jpg", dstimg);
	waitKey(0);

Inserte la descripción de la imagen aquí
Operación de expansión: La
operación de expansión es lo opuesto a la operación de corrosión, que expande el contorno de la imagen. El método de operación es similar a la operación de corrosión, también toma una plantilla rectangular y atraviesa cada píxel de la imagen. La diferencia es que el valor del píxel modificado no es el valor más pequeño entre todos los píxeles, sino el valor más grande. El resultado de esta operación conectará y extenderá los puntos prominentes en la periferia de la imagen. El proceso de operación como se muestra a continuación:

Inserte la descripción de la imagen aquí

	Mat image = imread("E:\\picture\\lena.jpg");
	imshow("原始图", image);

	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dstimg;
	dilate(image, dstimg, element);
	imshow("膨胀", dstimg);

	imwrite("E:\\picture\\lenaout.jpg", dstimg);
	waitKey(0);

Inserte la descripción de la imagen aquí
Operación abierta:

Función: agrandar las grietas y las áreas de baja densidad, eliminar los objetos pequeños y no cambiar su área al suavizar los límites de los objetos más grandes. Elimina protuberancias en la superficie del objeto.
La operación de apertura consiste en corroer la imagen primero y luego expandirla. La plantilla utilizada para corrosión y expansión es del mismo tamaño. Para ilustrar el efecto de la operación de apertura, consulte el proceso de operación en la siguiente figura:

Inserte la descripción de la imagen aquí

	Mat image = imread("E:\\picture\\lena.jpg");
	imshow("原始图", image);

	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dstimg;
	morphologyEx(image, dstimg, MORPH_OPEN, element);
	imshow("开操作", dstimg);

	imwrite("E:\\picture\\lenaout.jpg", dstimg);
	waitKey(0);

Inserte la descripción de la imagen aquí

Cerrar operación:

Función: excluir pequeños agujeros negros, hacer sinapsis en un área más oscura que el área del contorno de la imagen original y conectar las dos áreas para formar un dominio conectado.
La operación de cierre consiste en expandir y luego corroer la imagen. El resultado de la operación de cierre es generalmente que muchos mosaicos cercanos se pueden conectar como un dominio conectado sin protuberancias.
Inserte la descripción de la imagen aquí

	Mat image = imread("E:\\picture\\lena.jpg");
	imshow("原始图", image);

	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dstimg;
	morphologyEx(image, dstimg, MORPH_CLOSE, element);
	imshow("闭操作", dstimg);

	imwrite("E:\\picture\\lenaout.jpg", dstimg);
	waitKey(0);

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_36587495/article/details/108553806
Recomendado
Clasificación