track eye pupil hedefleyen bir proje üzerinde çalışıyorum. Bunun için gözün görüntülerini yakalayan kafa montajlı bir sistem yaptım. Donanım bölümü yazılımında parçalanmış olarak tamamlanmıştır. opencv kullanıyorum. Lütfen öğrenciyi takip etmenin en etkili yolunun ne olacağını bana bildirin. Houghcircles iyi performans göstermedi. Ben de burada HSV filtresi ile denenmiş ve adres Bundan sonraBir videoda göz gözü öğrencisi
kodu ve ham görüntünün ekran link ve bir işlenmiş olduğunu. Lütfen bu sorunu çözmek için bana yardımcı olun. Bağlantı ayrıca bu kodda kullanıyorum göz öğrenci video içerir.
Kodu:
include "cv.h"
include"highgui.h"
IplImage* GetThresholdedImage(IplImage* img)
{
IplImage *imgHSV=cvCreateImage(cvGetSize(img),8,3);
cvCvtColor(img,imgHSV,CV_BGR2HSV);
IplImage *imgThresh=cvCreateImage(cvGetSize(img),8,1);
cvInRangeS(imgHSV,cvScalar(0, 84, 0, 0),cvScalar(179, 256, 11, 0),imgThresh);
cvReleaseImage(&imgHSV);
return imgThresh;
}
void main(int *argv,char **argc)
{
IplImage *imgScribble= NULL;
char c=0;
CvCapture *capture;
capture=cvCreateFileCapture("main.avi");
if(!capture)
{
printf("Camera could not be initialized");
exit(0);
}
cvNamedWindow("Simple");
cvNamedWindow("Thresholded");
while(c!=32)
{
IplImage *img=0;
img=cvQueryFrame(capture);
if(!img)
break;
if(imgScribble==NULL)
imgScribble=cvCreateImage(cvGetSize(img),8,3);
IplImage *timg=GetThresholdedImage(img);
CvMoments *moments=(CvMoments*)malloc(sizeof(CvMoments));
cvMoments(timg,moments,1);
double moment10 = cvGetSpatialMoment(moments, 1, 0);
double moment01 = cvGetSpatialMoment(moments, 0, 1);
double area = cvGetCentralMoment(moments, 0, 0);
static int posX = 0;
static int posY = 0;
int lastX = posX;
int lastY = posY;
posX = moment10/area;
posY = moment01/area;
// Print it out for debugging purposes
printf("position (%d,%d)\n", posX, posY);
// We want to draw a line only if its a valid position
if(lastX>0 && lastY>0 && posX>0 && posY>0)
{
// Draw a yellow line from the previous point to the current point
cvLine(imgScribble, cvPoint(posX, posY), cvPoint(lastX, lastY), cvScalar(0,255,255), 5);
}
// Add the scribbling image and the frame...
cvAdd(img, imgScribble, img);
cvShowImage("Simple",img);
cvShowImage("Thresholded",timg);
c=cvWaitKey(3);
cvReleaseImage(&timg);
delete moments;
}
//cvReleaseImage(&img);
cvDestroyWindow("Simple");
cvDestroyWindow("Thresholded");
}
Ben gözü izlemek ve merkezi bulmak mümkün duyuyorum doğrusu göz bebeğinin koordine eder.
İlk önce, başa takılan kamera tarafından çekilen görüntüyü eşleştiriyorum. Bundan sonra kontur bulma algoritması kullandım, sonra tüm konturların merkezini buldum. Bu bana gözbebeğinin merkez koordinatlarını veriyor, bu yöntem gerçek zamanlı olarak gayet iyi çalışıyor ve göz kırpmayı çok iyi doğrulukla tespit ediyor.
Şimdi, amacım bu özelliği bir oyuna (yarış oyunu) gömmek. Hangi durumda sol/sağa bakarsam o zaman araba sola/sağa hareket eder ve eğer yanıp sönerse araba yavaşlar. Şimdi nasıl devam edebilirim ??? Bunu yapmak için bir oyun motoruna ihtiyacım olur mu?
Görsel stüdyo 2010 (birlik vb.) Ile uyumlu açık kaynaklı oyun motorlarını duydum. Bu yapılabilir mi ??? Eğer evetse, nasıl devam etmeliyim?
Bu gerçekten yeni bir soru olmalı. –
tamam, burada http://stackoverflow.com/questions/8200031/transfer-output-of-opencv-to-input-for-a-game-engine – siso