Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What is masking an image in OpenCV?
In mask operations the value of each pixel of an image is recalculated based on a given mask matrix, this is known as the kernel. Masking is otherwise known as filtering.
The filter2D() method of the Imgproc class accepts a source, destination and kernel matrices and convolves the source matrix with the kernel matrix. Using this method you can mask or filter an image.
Example
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class MaskingExample {
public static void main( String[] args ) {
//Loading the OpenCV core library
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
//Reading the input image
String file = "D://images//boy.jpg";
Mat src = Imgcodecs.imread(file);
//Creating an empty matrix to store the result
Mat dst = new Mat();
//Creating kernel1
Mat kernel1 = new Mat(3, 3, CvType.CV_8S);
int row = 0, col = 0;
kernel1.put(row, col, 0, -1, 0, -1, 5, -1, 0, -1, 0);
//Creating kernel2
Mat kernel2 = Mat.ones(2,2, CvType.CV_32F);
for(int i = 0; i<kernel2.rows(); i++) {
for(int j = 0; j<kernel2.cols(); j++) {
double[] m = kernel2.get(i, j);
for(int k = 1; k<m.length; k++) {
m[k] = m[k]/(2 * 2);
}
kernel2.put(i,j, m);
}
}
//Filtering the image using kernel1
Imgproc.filter2D(src, dst, -1, kernel1);
HighGui.imshow("Mask Example1", dst);
dst = new Mat();
//Filtering the image using kernel2
Imgproc.filter2D(src, dst, -1, kernel2);
HighGui.imshow("Mask Example2", dst);
HighGui.waitKey();
}
}
Input Image

Output
On executing, the above program generates the following windows −
Kernel1 − 
Kernel2 − 
Advertisements