博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab-调用摄像头人脸识别
阅读量:6386 次
发布时间:2019-06-23

本文共 3078 字,大约阅读时间需要 10 分钟。

----------------------------边学边写边学习-------------------------------------

版本:2014a

 

调用摄像头

a = imaqhwinfo

如果出现下面的警告说明你没安装扩展工具。

警告: No Image Acquisition adaptors found. Image acquisition adaptors may be available as downloadable support packages. Open Support Package Installer to install additional vendors.

这时候Support Package Installer在MATLAB里面有下划线,然后你点开它,MATLAB会提供大概13个软件包,这时候选择OS Generic Video Interface下载安装就OK了 (要求注册账号,随便用个邮箱注册下就可以了,不需要付费)。

(matlab查看摄像头详细信息 请看 )

 

下面就是调用笔记本电脑摄像头并打开图像

(%如果使用USB摄像头,一般为2,笔记本自带摄像头为1)

vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', ...    'ROI', [1 1 640 480], ...    'ReturnedColorSpace', 'rgb' ); preview(vidDevice);

 

人脸检测我们用的是matlab的机器视觉工具箱(瞬间觉得matlab真心强大)

VJ算法的目的是检测人脸,但是其思想同样可以用于检测其他物体,只需进行训练即可。

VJ算法在Matlab里面实现的时候,已经训练好了正脸、侧脸、上半身、眼睛、嘴、鼻子,这些都是可以直接检测,不需训练,直接调用CascadeObjectDetector函数即可。

下面是检测人脸和上半身的例子

   % Example 1:  Face detection      % ----------------------------              faceDetector = vision.CascadeObjectDetector; % Default: finds faces       I = imread('visionteam.jpg');      bboxes = step(faceDetector, I); % Detect faces      % Annotate detected faces      IFaces = insertObjectAnnotation(I, 'rectangle', bboxes, 'Face');         figure, imshow(IFaces), title('Detected faces');       % Example 2: Upper body detection      % --------------------------------------             bodyDetector = vision.CascadeObjectDetector('UpperBody');          bodyDetector.MinSize = [60 60];      bodyDetector.MergeThreshold = 10;      I2 = imread('visionteam.jpg');      bboxBody = step(bodyDetector, I2); % Detect upper bodies      % Annotate detected upper bodies         IBody = insertObjectAnnotation(I2, 'rectangle', ...                                     bboxBody, 'Upper Body');      figure, imshow(IBody), title('Detected upper bodies');

  

至于调用摄像头进行人脸识别,肯定是 调用摄像头的过程中对每一帧图像分别进行识别,然后再在图像中框出来。

这就要求 速度 要足够快。所以检测的时候就要压缩你图像的像素了。

下面放代码

faceDetector = vision.CascadeObjectDetector(); %enable viola jones algorithmbbox = [100 100 100 100];vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', ...    'ROI', [1 1 640 480], ...    'ReturnedColorSpace', 'rgb' );%set(vidDevice.DeviceProperties, 'FrameRate', '30');boxInserter = vision.ShapeInserter('BorderColor','Custom',...    'CustomBorderColor',[255 255 0]);textInserter = vision.TextInserter('%d','LocationSource','Input port','Color',[255,255, 0],'FontSize',12);nFrame =300;vidInfo = imaqhwinfo(vidDevice);vidHeight = vidInfo.MaxHeight;vidWidth = vidInfo.MaxWidth;videoPlayer = vision.VideoPlayer('Position',[300 100 640+30 480+30]);for k = 1:nFrame % start recording with 300 frames    %tic; % timer start    videoFrame = step(vidDevice); % enable the image capture by webcam    bbox = 4 * faceDetector.step(imresize(videoFrame, 1/4)); % boost video's fps    videoOut = step(boxInserter, videoFrame, bbox); % highlight the boxes of face at video    %release(boxInserter);    step(videoPlayer, videoOut); % display the video live in video playerend

  一共执行了300帧,下面放图。

 

posted on
2018-12-28 21:51 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/hyb965149985/p/10193075.html

你可能感兴趣的文章
学习计划
查看>>
获取鼠标和元素的坐标点
查看>>
PXE 部署不同版本的系统安装环境以及挽救环境
查看>>
Linux 计划任务
查看>>
flask的orm操作
查看>>
如何防止驱动被恶意利用
查看>>
Nagios的搭建
查看>>
我的友情链接
查看>>
Oracle SQL之--多表查询基础用法
查看>>
图形化插件对Eclipse的版本要求
查看>>
两个关于数列的Python脚本(斐波那契数列和猴子吃香蕉类问题)
查看>>
olabuy-时光从来素默,内心应保持一份素淡与简静
查看>>
Spring Batch Bean 校验 API 支持
查看>>
kux文件怎么打开 苹果手机如何观看kux视频
查看>>
Python中的urllib.request模块
查看>>
第九课 《说人话》
查看>>
js对象数组排序
查看>>
如何实现在展示商品时,放大商品细节
查看>>
uboot boot流程分析
查看>>
如何学习PHP整个体系的?
查看>>