c - 通过 OpenCV 跟踪打印眼睛坐标

标签 c opencv coordinates eye-tracking

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

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

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

<pre><code>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 ); </code></pre> <p>//Load Cascade</p> <pre><code>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 ); </code></pre> <p>//Maybe this is where I get the coordinates?</p> <pre><code> pt1.x = r->x*scale; pt2.x = (r->x+r->width)*scale; pt1.y = r->y*scale; pt2.y = (r->y+r->height)*scale; </code></pre> <p>//Draw rectangle over face</p> <pre><code> cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 ); } } cvReleaseImage( &temp ); return faceDetected; </code></pre>

}

最佳答案

可能这就是你想要的:

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 ); 
}

关于c - 通过 OpenCV 跟踪打印眼睛坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15757439/

相关文章:

c++ - 如何在opencv中从任何角度检测字母 "E"

python - 傅立叶变换逆傅立叶变换python

python - 检查坐标是否在坐标系上的某个区域

Android:缩放后在 ImageView 上找到绝对点击位置(使用捏合缩放使用矩阵布局)

c - 如何在 c/c++(openssl) 中验证任何类型的证书?

python - 如何将质询密码编码到证书请求中

c - 如何创建一个接口(interface)来为 fortran 转换 c 字符数组

python - 在图像中查找单色水平空间

C Linux 检查挂载空间

javascript - Chart.js 雷达标签坐标