Java OpenCV - 检测 ROI、创建 submat 并复制到原始 mat

标签 java opencv blur mat

我正在尝试模糊网络摄像头检测到的所有人的脸部。 问题是,当网络摄像头检测到人脸时,程序会显示带有模糊人脸的裁剪垫。

我尝试将模糊面放入原始垫子中,但不起作用。

for(Rect rect : faces.toArray()){
    Imgproc.rectangle(frame, rect.tl(), rect.br(), new Scalar(0,0,255),3);
    Rect rectCrop = new Rect(rect.x, rect.y , rect.width, rect.height);
    Mat imageROI = grayFrame.submat(rectCrop);

    //frame is the original mat with the correct size
    Imgproc.GaussianBlur(imageROI, frame, new Size(55, 55), 55);
}

没有人脸检测:

No face detection

通过人脸检测:

With face detection

最佳答案

使用Mat的这个构造函数

Mat imageROI = new Mat(grayFrame,rectCrop);

而不是

 Mat imageROI = grayFrame.submat(rectCrop);

构造函数为您提供对grayFrame 拥有的数据矩阵的引用。因此对 submat 的任何修改都会影响 bigmat。submat 提供裁剪矩形的 GrayFrame 数据矩阵的副本。因此对 submat 的修改不会影响 bigmat。

关于Java OpenCV - 检测 ROI、创建 submat 并复制到原始 mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37849313/

相关文章:

python - cv2.COLOR_BGR2Lab 不工作,但 cv2.COLOR_BGR2GRAY 正在工作

javascript - JQuery .blur() 不工作

jQuery - 如果为空,则将输入值设置为模糊时的先前值

java - 为什么 Collections.synchronizedList(list) 在内部使用 instanceof 检查?

c++ - cvStartFindContours 的奇怪问题?

c++ - 如何使用每n个像素opencv计算直方图

CSS模糊背景图片的一部分

java - EC2 Java Api 等待创建 Ec2 实例。

java - 如何使用Excel电子表格作为Java应用程序的计算引擎?

java - Chrome 操作系统上的用户无法查看在新选项卡中打开的 .csv 或 .xls 文件