【问题标题】:Printing Eye Coordinates through OpenCV tracking通过 OpenCV 跟踪打印眼睛坐标
【发布时间】:2013-03-23 08:29:07
【问题描述】:

我已经设法执行了一些简单的面部和眼睛检测/跟踪。它不太准确,但它确实有效。我想知道 OpenCV 库中是否有某种方法可以提取眼睛和面部移动时的坐标,并在控制台中实时打印出来。或者甚至可以将这些坐标保存在输出文件中。

更新(面部和眼睛检测代码):

int detect( IplImage* img, const char* cascade_name ) {

static CvMemStorage* storage = 0;

static CvHaarClassifierCascade* cascade = 0;

int scale = 1;
int i;
IplImage* temp = cvCreateImage( cvSize(img->width/scale,img->height/scale), 8, 3 );

//加载级联

cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );

if( !cascade )
{
    fprintf( stderr, "ERROR: Could not load classifier cascade!\n" );
    return 0;
}


storage = cvCreateMemStorage(0);
cvClearMemStorage( storage );
int faceDetected = 0;
if( cascade )
{
    //In case there is more than one face
    CvSeq* faces = cvHaarDetectObjects( img, cascade, storage,
                                       1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
                                       cvSize(40, 40) );

    faceDetected = (faces ? faces->total : 0);

    for( i = 0; i < (faces ? faces->total : 0); i++ )
    {

        CvRect* r = (CvRect*)cvGetSeqElem( faces, i );

//也许这就是我得到坐标的地方?

        pt1.x = r->x*scale;
        pt2.x = (r->x+r->width)*scale;
        pt1.y = r->y*scale;
        pt2.y = (r->y+r->height)*scale;

//在脸上画矩形

        cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 );

    }
}
cvReleaseImage( &temp );   
return faceDetected;   

}

【问题讨论】:

  • 是的,你可以。不用怀疑。
  • 我应该更直接一点。我的问题是如何?我会调用什么方法来做到这一点。我尝试查看 OpenCV 文档,但找不到任何对我来说简单明了的东西。我是计算机视觉的新手,仅供参考。
  • 显示代码中检测眼睛或面部的函数
  • 刚刚编辑了我的原始帖子。
  • 您自己标记了获取坐标的部分。

标签: c opencv coordinates eye-tracking


【解决方案1】:

This是opencv内置的简单人脸检测。他们用另一个CascadeClassifier 检测面部内的眼睛。您可以从opencv repository 下载现有CascadeClassifiers 的列表,并根据您的需要使用它们。如果它们都不满足您的要求,您可以随时训练自己的分类器,例如关注this tutorial

【讨论】:

    【解决方案2】:

    这可能就是你想要的:

    for( i=0 ; i< faces->total; i++ )
    {
     CvRect* r = (CvRect*)cvGetSeqElem( faces, i );
     printf("( %d %d ) , ( %d %d) ", r->x, r->y, r->x + r->width, r->y + r->height ); 
    }
    

    【讨论】:

    • 太棒了。这肯定会有所帮助。我有另一个关于 OpenCV 的问题。我已经能够实时完成所有事情。但有时它会变得非常慢,我的电脑在处理实时显示在屏幕上的高分辨率视频时并没有那么强大。有没有一种方法可以对输入视频执行跟踪,有人可以指导我阅读有关如何执行此操作的文档吗?效率一样吗?谢谢!
    猜你喜欢
    • 2015-02-03
    • 1970-01-01
    • 2015-05-02
    • 2018-09-01
    • 2011-05-26
    • 2021-05-25
    • 2020-09-30
    • 2015-11-12
    • 1970-01-01
    相关资源
    最近更新 更多