opencv 眼睛识别 linux,OpenCV识别图片眼部中心定位点

` ` `

{

#include "highgui.h"

#include "cv.h"

#include

#include

#include

using namespace std;

using namespace cv;

void DetectAndDraw(IplImage* img, CascadeClassifier& cascade);

//String cascadeName = "haarcascade_frontalface_alt.xml";

//(识别脸部) String cascadeName = "haarcascade_eye_tree_eyeglasses.xml";

//nestedCascadeName (D:\眼动识别相关资料\opencv\build\etc\haarcascades)

int main()

{

CascadeClassifier cascade;

cascade.load(cascadeName);

cvNamedWindow("result", 1);

IplImage* iplImg = cvLoadImage("timg.jpg");

DetectAndDraw(iplImg, cascade);

cvWaitKey(0);

cvDestroyWindow("result");

return 0;

}

void DetectAndDraw(IplImage* img, CascadeClassifier& cascade)

{

int i = 0;

double t = 0;

vector faces;//存坐标

const static Scalar colors[] = { CV_RGB(0,0,255), CV_RGB(0,128,255), CV_RGB(0,255,255), CV_RGB(0,255,0), CV_RGB(255,128,0), CV_RGB(255,255,0), CV_RGB(255,0,0), CV_RGB(255,0,255) };

IplImage* gray = cvCreateImage(cvGetSize(img), 8, 1);

cvCvtColor(img, gray, CV_BGR2GRAY);

cvEqualizeHist(gray, gray);

Mat matGray = cvarrToMat(gray);

t = (double)cvGetTickCount();

cascade.detectMultiScale(matGray, faces, //matGray图片,faces坐标 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE , Size(30, 30));

t = (double)cvGetTickCount() - t;

printf("detection time = %g ms\n", t / ((double)cvGetTickFrequency()*1000.));

for (vector::const_iterator r = faces.begin();

r != faces.end()

; r++, i++)

{ Point center; Scalar color = colors[i % 8];

int radius;

//center可以作为瞳孔的坐标

center.x = cvRound(r->x + r->width*0.5);

center.y = cvRound(r->y + r->height*0.5);

//radius = (int)(cvRound(r->width + r->height)*0.25);

radius = 2;

cvCircle(img, center, radius, color, 3, 8, 0);

cvShowImage("result", img);

}

cvShowImage("result", img);

}

}

` ` `

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值