Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用OpenCV&;node.js_Node.js_Opencv_Image Processing - Fatal编程技术网

利用OpenCV&;node.js

利用OpenCV&;node.js,node.js,opencv,image-processing,Node.js,Opencv,Image Processing,我正在着手一个项目,该项目涉及创建一个在线工具,通过网络摄像头/照相机静态照片测量一个人的瞳孔距离。棘手的部分是自动检测照片中的瞳孔。我对这种图像处理几乎没有经验,但我一直在做一些研究 到目前为止,我正在考虑使用以下可用库通过node.js使用openCV: 我在正确的轨道上吗?与针对C++/java/python/etc开发的库相比,该库的功能似乎有限,但该项目的时间表不允许我在此过程中学习新语言 我只是想与任何对这类事情有更多经验的人联系,欢迎提供任何建议。谢谢 我不确定瞳孔检测,但眼睛检测

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

到目前为止,我正在考虑使用以下可用库通过node.js使用openCV:

我在正确的轨道上吗?与针对C++/java/python/etc开发的库相比,该库的功能似乎有限,但该项目的时间表不允许我在此过程中学习新语言


我只是想与任何对这类事情有更多经验的人联系,欢迎提供任何建议。谢谢

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

opencv=需要“opencv”
检测=(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]
用于眼睛对中的眼睛对
如果((eyepair.x-lasteeyepair.x)**2+(eyepair.y-lasteeyepair.y)**2<500)
最后一对眼睛
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.矩形[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]表示眼睛中的眼睛
console.log“眼睛”,眼睛
im.save“site/webcam.png”
摄像头=新opencv.VideoCapture 0
捕获=()->
camera.read(错误,即时消息)->
如果出错
摄影机关闭()
console.error错误
其他的
检测即时消息
setTimeout捕获,1000
setTimeout捕获,2000
对象的检测与一起工作,由
detectObject
异步调用。一旦检测完成,就会调用一个回调函数来处理找到的对象的位置和大小。 我分两个阶段进行检测:首先检测速度相当快且稳定的眼睛对,然后将图像裁剪为眼睛对周围的矩形并检测其中的眼睛。如果你想检测瞳孔,那么你应该找到一个瞳孔检测的级联(因为瞳孔基本上是一个黑点,所以不应该太难),裁剪每只眼睛周围的图像并检测其中的瞳孔

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

项目进展如何?我正在考虑做同样的事情,我很想听听你的经验
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