一个简单的人脸检测
2015-07-23 20:19
197 查看
<span style="font-size:18px;"><strong>I=imread('lena.jpg'); imshow(I) % I=rgb2gray(I); I=wiener2(I,[5 5]); figure; imshow(I); bw=im2bw(I); figure; imshow(bw); [m n]=size(bw); r=floor(m/10); c=floor(n/10); x1=1;x2=r; s=r*c; %吧图像的边缘的十分之一区域进行去除 for i=1:10 y1=1;y2=c; for j=1:10 if(y2<=c | y2>=9*c)|(x1==1 | x2==r*10) bw(x1:x2,y1:y2)=0; end y1=y1+c; y2=y2+c; end x1=x1+r; x2=x2+r; end %吧图像边缘十分之一的弄成黑色 figure; imshow(bw); L=bwlabel(bw,4); %标注个联通区域 BB=regionprops(L,'BoundingBox'); %计算包含这个连通区域的最小矩形的坐标 BB1=struct2cell(BB); %将个联通区域的坐标结构转换成元包 BB2=cell2mat(BB1); %将元包转换成数组 [s1 s2]=size(BB2); mx=0; for k=3:4:s2-1 p=BB2(1,k)*BB2(1,k+1); if p>mx & (BB2(1,k+1)/BB2(1,k))<2 mx=p; j=k; end end %根据人脸区域长度与宽度的比小于2来确定 figure; imshow(I); hold on rectangle('Position',[BB2(1,j-2) BB2(1,j-1) BB2(1,j) BB2(1,j+1)],'EdgeColor','r') %用红矩形框画出人脸区域</strong></span>
相关文章推荐
- Web工程下资源文件的读取
- 详解jar命令打包生成双击即可运行的Java程序
- Objective-C学习笔记(十五)——实例化对象
- [java]深入理解JVM内存模型
- 夜间肌肤护肤要做到6点 轻松摆脱各种肌肤问题
- SHA-256算法 C语言实现
- C语言宏定义,内置宏,__FILE__,__LINE__,## 用法
- 【MySQL】(4)操作数据表中的记录
- 转载: vim使用技巧
- HDOJ 1312 Red and Black (简单dfs)
- Android 键盘开发心得
- Add Two Numbers
- storm如何分配任务和负载均衡?
- B - 队列,推荐
- 2015 Multi-University Training Contest 2 1006
- 银行窗口排队叫号系统实现
- hive建表等操作
- C#语法总结篇---写在开头的部分
- oracle之关连接查询
- Mac OS X 执行shell以及bash shell的区别。