简单人脸识别

思路
找到图像中连通域面积最大的那块连通域。

i=imread('face.jpg');
I=rgb2gray(i);
BW=im2bw(I);             %利用阈值值变换法将灰度图像转换成二进制图像
figure(1);
imshow(BW);%最小化背景
[n1 n2]=size(BW);r=floor(n1/10); %分成10块  行
c=floor(n2/10);%分成10块  列
x1=1;x2=r;%对应行初始化
s=r*c; %块面积for i=1:10y1=1;y2=c;%对应列初始化for j=1:10%对四周区域进行处理 if(y2<=c || y2>=9*c) || (x1==1 || x2==r*10)loc=find(BW(x1:x2,y1:y2)==0);%找到一块中像素为0的坐标 结果存在矩阵中[o p]=size(loc);pr=o*100/s;%黑色像素所占比例if pr<=100BW(x1:x2,y1:y2)=0;% 该块变成全黑endimshow(BW);end%列跳跃 就是移到下一块y1=y1+c;y2=y2+c;end%行跳跃 也就是移到下一行x1=x1+r;x2=x2+c;
end
figure(2)
subplot(1,2,1);
imshow(BW)
title('图像处理');
%人脸识别
L=bwlabel(BW,8);%利用bwlabel()函数得到连通域区间
BB=regionprops(L,'BoundingBox');%得到矩形框 去框住每一个连通域%对每个矩形框进行记录,记录其左上角点,长,宽   然后转换成矩阵形式
BB1=struct2cell(BB);
BB2=cell2mat(BB1);[s1 s2]=size(BB2);
mx=0;
for k=3:4:s2-1p=BB2(1,k)*BB2(1,k+1); %连通域矩形面积%找出最大连通域面积 那块连通域就是我们寻找的人脸了if p>mx && (BB2(1,k)/BB2(1,k+1))<1.8mx=p;j=k;end
end
subplot(1,2,2);
title('人脸识别');
imshow(I);
hold on;
%画出人脸区域
rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j)],'EdgeColor','r')

结果

2 找图像连通域_MATLAB--数字图像处理 简单人脸识别相关推荐

  1. MATLAB--数字图像处理 简单人脸识别

    简单人脸识别 思路 找到图像中连通域面积最大的那块连通域. i=imread('face.jpg'); I=rgb2gray(i); BW=im2bw(I); %利用阈值值变换法将灰度图像转换成二进制 ...

  2. 几何畸变图像恢复 openCV3 - 数字图像处理作业3

    几何畸变图像恢复 OpenCV3 - 数字图像处理作业3 作业3:相同条件下拍到的棋盘图和日历钟表图,尝试建立几何畸变关系,并对它们进行恢复.注意:不能采用椭圆的变换. 算法步骤: 坐标变换: 在畸变 ...

  3. Android之OpenCv简单人脸识别功能(Bitmap)

    Android之OpenCv简单人脸识别功能 OpenCv的下载 下载地址 - https://opencv.org/releases/ doc 文档目录 samples 示例代码 sdk 编译后的动 ...

  4. Python三十行代码实现简单人脸识别

    Python三十行代码实现简单人脸识别 一.库介绍 opencv,face_recognition,numpy,以及dlib 注意: 安装opencv速度可能过慢,需要更换国内镜像源,参考:https ...

  5. MATLAB中计算图像哈希,数字图像处理算法及原理(三):相似图片搜索(平均哈希算法)...

    这里的关键技术叫做"感知哈希算法(aHash)"ash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同 ...

  6. 计算机视觉————(CV)图像基础以及数字图像处理基础

    1.数字图像 客观世界中,以自然形式呈现出的图像通常称作物理图像,也叫做连续图像,图像信号值是连续变化的.因为计算机只可以识别离散数字,因此物理图像需要经过处理转化为数字形式,即数字图像,才可以使用. ...

  7. 基于数字图像处理的杂草识别

    一.课题介绍 杂草同农田作物争夺阳光和养分,严重影响了农作物的生长.为了达到除草的目的,人们开始喷洒大量的除草剂来进行除草.可是却忽略了除草剂的不当使用给人.畜以及环境造成的危害.本文从实际应用出发, ...

  8. 主成分分析-简单人脸识别(二)

    一):人脸预准备 (文章说明:正常的人脸识别时,需要的是足够多的样本来进行训练,以期达到准确率高的目的.这里,只是尝试运用PCA算法基本上实现人脸的识别.) 那么我所使用到的人脸模板就是简单的12张处 ...

  9. 简单人脸识别一之使用opencv+cnn网络实现人脸识别

    最近在研究目标检测这个方向,看到网上有很多的人脸识别帖子,所以也想着上上手看看.当时是做了三个模型出来,第一个就是网上很通用普遍的opencv+简单三层cnn网络来实现的,说实话效果真的一般吧!具体的 ...

最新文章

  1. Context.getExternalFilesDir()和Context.getExternalCacheDir()
  2. 2020腾讯广告算法大赛分享(冠军)
  3. Amazon EC2云端服务器的使用方法
  4. ubuntu16.04安装新版本golang
  5. oracle建索引默认并发,ORACLE重建索引需要考虑问题
  6. 0228互联网新闻 | 抖音新推营销产品“抖店”;iTutorGroup牵手机器人索菲亚开创“新双师”模式...
  7. android viewpage预加载和懒加载问题
  8. hibernate在不联网或者网络异常时不能解析配置文件
  9. ICPC North Central NA Contest 2017 E - Is-A? Has-A? Who Knowz-A?
  10. 软件项目组织与管理期末考试复习要点整理翻译
  11. 学生信息管理系统总体设计规划书
  12. 微信附近的人小程序怎么开(开通附近小程序的方法)
  13. 文献阅读——Revisiting Semi-Supervised Learning with Graph Embeddings
  14. 如何开通微信商城?微商城的开通方法?
  15. ddr走线教程_DDR走线规则
  16. Linux下的常用编程工具初探
  17. Lawliet|编程学习基础
  18. [通达OA二次开发]FineReport 与通达OA集成 如何实现统一登录。
  19. java gc 时间_Java GC日志查看,GC日志时间分析
  20. 通信人常见的10大职业病,看看你有几个?

热门文章

  1. 几枝浏览器插件介绍,一个充满了中国风的浏览器插件
  2. 如何为JavaScript选择文本编辑器
  3. access下如何配置两个vlan_不同vlan间的通信如何简单配置(三种方式) ?
  4. Apache Flink新场景——OLAP引擎
  5. 进程间通信——Queue
  6. Invoke and BeginInvoke BeginInvoke和EndInvoke方法 (转)2
  7. 每天进步一点点《ML - 基于层次的聚类》
  8. pytorch中的torch.rand(),torch.randn(),torch.randerm()的关系
  9. Matlab--max,min函数的用法
  10. Ubuntu16.04 安装CUDA8.0+CUDNN6.0+Tensorflow-GPU1.4版本出现问题解决方案