欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
绍一个网站,演示了通过HTML5 + JavaScript技术实现的人脸识别,目前仅适用于Chrome浏览器,首先需要在地址栏输入about:flags,然后找到“启用MediaStream”这一项,然后点击“启用”后重新启动Chrome浏览器
侦测到人脸
然后打开下面地址:
http://neave.com/webcam/html5/face/
当你摇头晃脑的时候,那副眼镜会跟着移动并帮你戴上眼镜。
您可以查看网页原始码来了解具体的实现细节。
——————————————我是分界线——————————————
这是一篇国外的文章,介绍如何通过WebRTC,OpenCV和WebSocket技术实现在Web浏览器上的人脸识别,架构在Jetty之上。
实现的效果包括:
人脸检测结果
还能识别眼睛
眼睛检测结果
人脸识别的核心代码:
页面:
XML / HTML代码将内容复制到文本
< div >  
< video id = “ live”宽度= “ 320” height = “ 240” 自动播放 样式= “ display:inline;” > </视频>     
< canvas width = “ 320” id = “ canvas” height = “ 240” style = “ display:inline;” > </ canvas >      
</ div >  
  
<脚本类型= “ text / javascript” >   
var  video  = $(“#live”)。get()[0];  
var  canvas  = $(“#canvas”);  
var  ctx  =  canvas .get()[0] .getContext('2d');  
  
navigator.webkitGetUserMedia(“ video”,  
函数(流){  
video.src  =  webkitURL .createObjectURL(stream);  
},  
函数(错误){  
console.log(“无法获得视频流!”)  
}  
)  
  
计时器 =  setInterval (  
函数(){  
ctx.drawImage(video,0,0,320,240);  
},250);  
</脚本>  
 
JavaScript代码将内容复制到
公共类 FaceDetection {   
  
私有静态最终 字符串CASCADE_FILE = “ resources / haarcascade_frontalface_alt.xml ” ;    
  
private int  minsize = 20;   
private int 组= 0;   
私人双倍 比例= 1.1;   
  
/ ** 
*基于JavaCV的FaceDetection示例。 
* /  
公共字节[] convert(字节[] imageData) 引发 IOException {   
//从提供的字节数组创建图像  
IplImage originalImage = cvDecodeImage(cvMat(1,imageData.length,CV_8UC1,newBytePointer(imageData))));  
  
//转换为灰度以进行识别  
IplImage grayImage = IplImage.create(originalImage.width(),originalImage.height(),IPL_DEPTH_8U,1);  
cvCvtColor(originalImage,grayImage,CV_BGR2GRAY);  
  
//需要存储以在检测期间存储信息  
CvMemStorage存储= CvMemStorage.create();  
  
//用于分析的配置  
CvHaarClassifierCascade级联= newCvHaarClassifierCascade(cvLoad(CASCADE_FILE));  
  
//我们检测到人脸。  
CvSeq faces = cvHaarDetectObjects(grayImage,级联,存储,比例,组,最小大小);  
  
//我们遍历发现的面孔并在其周围绘制黄色矩形。  
for  (int  i = 0; i <faces.total(); i ++){  
CvRect r = 新的 CvRect(cvGetSeqElem(faces,i));  
cvRectangle(originalImage,cvPoint(rx(),ry()),  
cvPoint(rx()+ r.width(),ry()+ r.height()),  
CvScalar.YELLOW,1,CV_AA,0);  
}  
  
//将生成的图像转换回数组  
ByteArrayOutputStream bout =  new  ByteArrayOutputStream();  
BufferedImage imgb = originalImage.getBufferedImage();  
ImageIO.write(imgb,  “ png” ,bout);  
返回 bout.toByteArray();  
}  
}  

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h60902.shtml