Hello Mat

 找回密码
 立即注册
查看: 4579|回复: 0

人脸图像实时检测(摄像头)

[复制链接]

1294

主题

1520

帖子

110

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22633
发表于 2017-2-5 11:57:51 | 显示全部楼层 |阅读模式
    运动人图像检测,以第一张背景图像为基准,采用背景差分的方式进行电脑摄像头中的运动物体的检测,该方法简单实用,并且易于上手,基于背景差分的运动人脸检测MATLAB仿真实现,具体程序如下:
  1. clc,clear,close all                    % 清屏、清工作区、关闭窗口
  2. warning off                         % 消除警告
  3. feature jit off                       % 加速代码执行
  4. imaqmem(7e08);                             % 申请内存空间
  5. waitopen;
  6. feature jit off                               % 加速代码执行,提高运行时间
  7. vid = videoinput('winvideo',1,'YUY2_320x240');  %摄像头参数
  8. % Set the properties of the video object
  9. set(vid, 'FramesPerTrigger', Inf);                            % 帧触发器设置
  10. set(vid, 'ReturnedColorspace', 'rgb') % RGB颜色空间
  11. vid.FrameGrabInterval = 5;                            % 帧数间隔
  12. % 启动摄像头设备
  13. start(vid)
复制代码
启动摄像头后,进入系统循环,进行一定时间的运动人图像检测,具体的MATLAB代码如下:
  1. % 采集100帧后,接触循环
  2. while(vid.FramesAcquired<=100)

  3. data = getsnapshot(vid);  % 拍摄图像
  4. diff_im = imsubtract(data(:,:,1), rgb2gray(data));     % 做差
  5. diff_im = medfilt2(diff_im, [3 3]);                   % 中值滤波
  6. diff_im = imadjust(diff_im);                        % 图像增强--灰度级直接变换
  7. level = graythresh(diff_im);                       % 求全局阈值
  8. bw = im2bw(diff_im,level);                        % 二值化处理
  9. BW5 = imfill(bw,'holes');                          % 填充空洞
  10. bw6 = bwlabel(BW5, 8);                          % 标记二值化图
  11. stats = regionprops(bw6,['basic']);                 % 连通域处理basic mohem nist
  12. [N,M]=size(stats);
  13. if (bw==0)                                                                 % 如果和背景相当,无移动目标
  14.      break;
  15. else
  16.      tmp = stats(1);
  17. for i = 2 : N
  18.     if stats(i).Area > tmp.Area                                  % 面积比较
  19.         tmp = stats(i);
  20.     end
  21. end
  22. bb = tmp.BoundingBox;                                                 % 画识别物体方框
  23. bc = tmp.Centroid;                                                    % 物体中心
复制代码
运行显示检测的运动目标,程序如下:
  1. imshow(data)   % 画图
  2. hold on
  3. rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
  4. hold off
  5. end
  6. end
复制代码
关闭摄像头,释放系统缓存数据,程序如下:
  1. stop(vid);               % 停止
  2. flushdata(vid);          % 清楚缓存数据
  3. % 清楚所有的变量
  4. clear all
复制代码
    运行等待条框程序如下:
  1. function waitopen
  2. h1=waitbar(0.1,'Please wait, check hardware......');
  3. pause(0.5)
  4. h1=waitbar(0.8,h1,'Please wait, initialize the window');
  5. pause(0.5)
  6. h1=waitbar(1.0,h1,'Please wait, initialize the window');
  7. close(h1);
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-4-26 16:49 , Processed in 0.266889 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表