Human Eye Detection using Javascript and OpenCV
Hello everyone, in the previous topic we saw how we can detect single/multiple faces on images. In this topic we are going to see how we can detect human eye on such images
Let's look at the result first
In case you missed last topic here is the link :
Let's look at the result first
In case you missed last topic here is the link :
https://reactcodes.blogspot.com/2019/11/face-detection-with-javascript-and.html
So for detecting eyes we are going to need eye haadcascade data
From this link you can download that file
Once you have the file ready and you already have setup face detection using my face detection article, we may now load the eye file
utils.loadImageToCanvas(imageUsed, 'imageInit')
let faceCascadeFile = 'haarcascade_frontalface_default.xml';
let eyeCascadeFile = 'haarcascade_eye.xml';
utils.createFileFromUrl(faceCascadeFile, faceCascadeFile, () => {
utils.createFileFromUrl(eyeCascadeFile, eyeCascadeFile, () => {
console.log('eye cascade ready');
})
});
Now try to reload your browser, if it shows up the log, you are ready for next step
We follow the same step as we did in face detection
let faces = new cv.RectVector();
let eyes = new cv.RectVector();
let faceCascade = new cv.CascadeClassifier();
let eyeCascade = new cv.CascadeClassifier();
faceCascade.load(faceCascadeFile);
eyeCascade.load(eyeCascadeFile);
For each face detected area we will try searching probable eye like pattern
let msize = new cv.Size(0, 0);
faceCascade.detectMultiScale(gray, faces, 1.1, 3, 0, msize, msize);
for (let i = 0; i < faces.size(); ++i) {
let roiGray = gray.roi(faces.get(i));
let roiSrc = src.roi(faces.get(i));
eyeCascade.detectMultiScale(roiGray, eyes);
for (let j = 0; j < eyes.size(); ++j) {
let point1 = new cv.Point(eyes.get(j).x, eyes.get(j).y);
let point2 = new cv.Point(eyes.get(j).x + eyes.get(j).width,
eyes.get(j).y + eyes.get(j).height);
cv.rectangle(roiSrc, point1, point2, [0, 255, 255, 255]);
}
roiGray.delete(); roiSrc.delete();
}
cv.imshow('imageResult', src);
src.delete(); gray.delete(); faceCascade.delete();
So now it's showing up eye areas
Thanks for your time, please consider subscribing my blog :)
Image Credits :
For performing the experiments I have used some images randomly downloaded from internet, here are the sources
For performing the experiments I have used some images randomly downloaded from internet, here are the sources


Comments
Post a Comment