Opening | Morphological Transformations in OpenCV in C++
Last Updated :
10 Feb, 2021
In this article, a Morphological operation called Opening is discussed.
Opening operation is similar to erosion in the sense that it also removes foreground pixels from the edges of the image. Opening operation is erosion operation followed by dilation. It is usually used for removing internal noise present inside an image. This operator safeguards the foreground region that has similarity with the structuring component or the one that fits inside the structuring element while removing everything else.
Syntax:
morphologyEx (src, dst, op, kernel, anchor, iterations, borderType, borderValue)
Parameters:
- src: It is the input image.
- dst: It is the output image.
- op: Type of morphological operation.
- kernel: Structuring element used for Closing.
- anchor: Anchor position inside the structuring element. The default value is [-1, -1} signifying position as the center of the structuring element.
- iterations: Number of times Closing is applied.
- borderType: Type of border ( BORDER_CONSTANT, BORDER_REPLICATE, etc.)
- borderValue: Border value
- Return: Output Image (Mat Object)
The opening operator is given by the expression:
The expression represents that AoB is a subset (sub-image of A). The opening operator removes internal noise and thin protrusions present inside an image.
Below is the C++ program to demonstrate the Opening Morphological Operation:
C++
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace std;
int openingMorphological()
{
Mat image = imread(
"C:/Users/harsh/Downloads/geeks.png" ,
IMREAD_GRAYSCALE);
if (!image.data) {
cout << "Could not open or"
<< " find the image\n" ;
return 0;
}
int morph_size = 2;
Mat element = getStructuringElement(
MORPH_RECT,
Size(2 * morph_size + 1,
2 * morph_size + 1),
Point(morph_size,
morph_size));
Mat output;
morphologyEx(image, output,
MORPH_OPEN, element,
Point(-1, -1), 2);
imshow( "source" , image);
imshow( "Opening" , output);
waitKey();
return 0;
}
int main()
{
openingMorphological();
return 0;
}
|
Output:
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...