有没有人有任何想法,步骤或算法可以使用javascript和HTML5对2D图像进行眼睛检测?
我已经将RGB转换为YCbCr色彩空间
现在我需要一些关于眼睛提取的帮助
function hellow(e)
{
var r,g,b,a,gray;
var imageData = ctxBg.createImageData(gameWidth,gameHeight);
var das =imageData.data;
for(var i=0;i<=800;i++)
{
for(var j=0;j<=640;j++)
{
var d = (j*imageData.width+i)*4;
var helow = ctxBg.getImageData(i,j,1,1);
r=helow.data[0];
g=helow.data[1];
b=helow.data[2];
a=helow.data[3];
das[d]=Math.round((0.299 *r) - (0.168935*g) + (0.499813*b));
das[d+1]=Math.round((0.587 *r) - (0.331665*g) + (0.418531*b));
das[d+2]=Math.round((0.114 *r) - (0.50059*g) + (0.081282*b));
das[d+3]=a;
console.log(das[d]+":"+das[d+1]+":"+das[d+2]);
}
}
ctxBg.putImageData(imageData,0,0);
//console.log('c');
e.preventDefault();
}
这是我将rgb转换为YCbCr颜色空间的代码。
请帮助我改进代码以加快执行速度。
答案 0 :(得分:6)
我最近试图解决同样的问题是:
缩小处理后的图像以获得不错的性能(我将所有内容缩减为320px宽度)
使用核心计算机视觉库检测图像中的脸部 - https://github.com/liuliu/ccv
根据检测到的脸部矩形信息,使用HAAR物体探测器检测眼睛(仅用于眼睛的级联检测 - https://github.com/inspirit/jsfeat
对于第2步,我还使用了JSFEAT库中的“灰度”和“equalize_histogram”。
此外,如果步骤3失败,您可以尝试猜测眼睛的位置(取决于您的准确度有多高)。
这个工作流程给了我满意的结果和表现。它在台式机(iMac上约500毫秒)和移动设备(使用网络摄像头图像的iphone 4上约3000毫秒)上进行了测试。 不幸的是,我现在无法发布一个链接到工作示例,但是一旦我有了一些东西,我会发布一个链接到github。
答案 1 :(得分:4)
您可以使用tracking.js使用相机拍摄的真实场景中的各种技术来检测眼睛。
使用库导入脚本并将画布添加到HTML后,您可以执行以下操作:
var videoCamera = new tracking.VideoCamera().hide().render().renderVideoCanvas(),
ctx = videoCamera.canvas.context;
videoCamera.track({
type: 'human',
data: 'eye',
onFound: function(track) {
for (var i = 0, len = track.length; i < len; i++) {
var rect = track[i];
ctx.strokeStyle = "rgb(0,255,0)";
ctx.strokeRect(rect.x, rect.y, rect.size, rect.size);
}
}
});
上面的代码来自库中的一个示例。 希望能帮到你
答案 2 :(得分:3)
我真的不知道是否只为眼睛检测实现了特定的东西,但是对于面部检测,你应该照看一个名为Core Computer Vision Library的库,该库托管在github上:https://github.com/liuliu/ccv。
另一种可能性是https://github.com/inspirit/jsfeat,其中面部和像素边缘检测使用不同的算法实现,如Lucas-Kanade光流和HAAR物体检测器。
请阅读此帖以获取更多技巧:Face detection javascript/html5/flash
答案 3 :(得分:2)
我敢说亮度只能足以检测眼睛/脸部位置 - 所以你可以通过滴加CbCr的计算来加快你的代码。人们通常使用Haar级联来寻找年份/面孔:
答案 4 :(得分:2)
有一个使用HAAR.js库(ps i是作者)在纯javascript / html5中进行眼睛检测(使用自定义眼睛haar openCV级联)的示例。
该项目已停止,未添加任何新功能,但它完成了所述内容。
答案 5 :(得分:1)
要使用OpenCV.js进行眼睛检测,请选中此Human Eye Detection using Javascript and OpenCV
let faceCascadeFile = 'haarcascade_frontalface_default.xml';
let eyeCascadeFile = 'haarcascade_eye.xml';
utils.createFileFromUrl(faceCascadeFile, faceCascadeFile, () => {
utils.createFileFromUrl(eyeCascadeFile, eyeCascadeFile, () => {
console.log('eye cascade ready');
})
})
示例