gpt4 book ai didi

node.js - 使用 OpenCV 和 node.js 自动检测瞳孔

转载 作者:搜寻专家 更新时间:2023-11-01 00:02:31 29 4
gpt4 key购买 nike

我正在着手一个项目,该项目涉及创建一个在线工具,通过网络摄像头/相机静态照片测量一个人的瞳孔距离。棘手的部分与自动检测照片中的瞳孔有关。我对此类图像处理的经验很少/没有,但我一直在做一些研究。

到目前为止,我正在考虑使用这个可用库通过 node.js 使用 openCV:https://github.com/peterbraden/node-opencv .

我是否在正确的轨道上?与 C++/java/python/等更发达的库相比,这个库的功能似乎有限,但这个项目的时间表不允许我在此过程中学习一门新语言。

只是想联系任何对此类事情有更多经验的人,非常欢迎任何提示/等。谢谢!

最佳答案

我不确定瞳孔检测,但眼睛检测并不难,请参阅此示例 CoffeeScript :

opencv = require "opencv"

detect = (im) ->
im.detectObject "./node_modules/opencv/data/haarcascade_mcs_eyepair_small.xml", {}, (err, eyepairs) ->
im.rectangle [eyepair.x, eyepair.y], [eyepair.x+eyepair.width, eyepair.y+eyepair.height] for eyepair in eyepairs
for eyepair in eyepairs
if ((eyepair.x - lasteyepair.x) ** 2 + (eyepair.y - lasteyepair.y) ** 2 < 500)
lasteyepair = eyepair
foundEye = true
im2 = im.roi Math.max(eyepair.x-10,0), Math.max(eyepair.y-10,0), Math.min(eyepair.width+20,im.width()), Math.min(eyepair.height+20,im.height())
im2.detectObject "./node_modules/opencv/data/haarcascade_eye.xml", {}, (err, eyes) ->
im.rectangle [Math.max(eyepair.x-10+eye.x,0), Math.max(eyepair.y-10+eye.y,0)], [eyepair.x-10+eye.x+eye.width, eyepair.y-10+eye.y+eye.height] for eye in eyes
console.log "eyes", eyes
im.save "site/webcam.png"

camera = new opencv.VideoCapture 0
capture = () ->
camera.read (err, im) ->
if err
camera.close()
console.error err
else
detect im
setTimeout capture, 1000

setTimeout capture, 2000

使用Viola-Jones method检测对象,它被 detectObject 异步调用。检测完成后,将调用一个回调来处理找到的对象的位置和大小。我分两个阶段进行检测:首先我检测相当快速和稳定的双眼,然后我将图像裁剪成双眼周围的矩形并检测其中的眼睛。如果你想检测瞳孔,你应该找到一个用于瞳孔检测的级联(不应该太难,因为瞳孔基本上是一个黑点),裁剪每只眼睛周围的图像并检测那里的瞳孔。

附录:我的代码有一个小错误:im.save 被每对眼睛多次调用,而它应该只在最后一次回调中被调用。

关于node.js - 使用 OpenCV 和 node.js 自动检测瞳孔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19822320/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com