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 :

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



Comments

Popular posts from this blog

Best coding practice and structure for redux saga with react hooks | Separate watcher and worker saga | React clean code

How to use redux with React Hooks - Creating TodoList

Setting up Redux Devtools for React applications