OpenCV 中的图像掩码是什么?
javaobject oriented programmingprogramming更新于 2025/10/9 15:40:17
在掩码操作中,图像的每个像素的值都是根据给定的掩码矩阵重新计算的,这称为内核。掩码也称为过滤。
Imgproc 类的 filter2D() 方法接受源矩阵、目标矩阵和内核矩阵,并将源矩阵与内核矩阵进行卷积。使用此方法,您可以对图像进行掩码或过滤。
示例
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 ) {
//加载 OpenCV 核心库
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
//读取输入图像
String file = "D://images//boy.jpg";
Mat src = Imgcodecs.imread(file);
//创建一个空矩阵来存储结果
Mat dst = new Mat();
//创建 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);
//创建 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);
}
}
//使用 kernel1 过滤图像
Imgproc.filter2D(src, dst, -1, kernel1);
HighGui.imshow("Mask Example1", dst);
dst = new Mat();
//使用 kernel2 过滤图像
Imgproc.filter2D(src, dst, -1, kernel2);
HighGui.imshow("Mask Example2", dst);
HighGui.waitKey();
}
}
输入图片

输出
执行时,上述程序生成以下窗口 −
Kernel1 − 
Kernel2 − 
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

