【问题标题】:face detection and make it blur人脸检测并使其模糊
【发布时间】:2015-10-13 02:51:31
【问题描述】:

我无法理解有关 Matlab 的代码

a = imread('Untitled2.png');
faceDetector = vision.CascadeObjectDetector;
bbox=step(faceDetector,a);
for j=1:size(bbox)
    xbox=bbox(j,:);
    subImage = imcrop(a, xbox);
    H = fspecial('disk',10);
    blurred = imfilter(subImage,H);
    a(xbox(2):xbox(2)+xbox(4),xbox(1):xbox(1)+xbox(3),1:end) = blurred; 
end
imshow(a);

谁能解释一下 for 循环在做什么?我尝试使用自己的方法来模糊检测到的面部,但我只是设法裁剪出面部并模糊裁剪后的图像,但我不知道如何将其恢复为原始图像。然后我尝试使用上面从互联网获得的源代码,互联网源代码能够模糊面部,我无法理解 for 循环逻辑。请给我解释一下,T^T。

谢谢。

【问题讨论】:

    标签: matlab blur face-detection matlab-cvst


    【解决方案1】:

    如你所见there

    BBOX = step(detector,I) 返回 BBOX,一个 M×4 矩阵,定义了包含检测到的对象的 M 个边界框。此方法对输入图像 I 执行多尺度对象检测。输出矩阵 BBOX 的每一行包含一个四元素向量 [x y width height],以像素为单位指定边界的左上角和大小盒子。输入图像 I,必须是灰度或真彩色 (RGB) 图像。

    您确定代码中是j=1:size(bbox) 而不是j=1:size(bbox,1)

    基本上,BBox 的定义自言自语。循环只是遍历所有检测到的框。..

    然后您提取有关第 j 个 框的信息。

    然后根据 xbox 的位置和大小提取 subImage(xbox 是一个包含 [x y width height] 的向量)。

    然后你定义你的过滤器。

    然后你模糊你的 subImage。

    然后您使用 xbox 中的信息用模糊的子图像覆盖您的图像。

    编辑:如果您已经成功地模糊了裁剪的图像,您只需要用您的模糊图像覆盖您的输入图像!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 2013-09-24
      • 2012-03-08
      • 2017-06-01
      • 1970-01-01
      • 2020-10-24
      • 2020-06-20
      相关资源
      最近更新 更多