Привет, я прошел через несколько ресурсов (например, opencv-сайт, примеры кода opencv и т. Д.) И написал код C++ для отслеживания пути движущегося объекта (здесь он является человеком) со статической камеры. Вот мой кодНет хороших результатов из моего кода оптического потока opencv
int main(int argc, char *argv[])
{
int MAX_COUNT=100;
Size SubPixelWinSize(10,10),winSize(30,30);
TermCriteria termcrit(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,30,0.01);
Mat frame_old;
Mat gray_old;
vector<Point2f>points;
vector<Point2f>pointsnew;
vector<uchar>status;
vector<float>err;
VideoCapture capture("C:\\Users\\Usre\\Desktop\\free\\1.mp4");
capture.set(CV_CAP_PROP_POS_MSEC,1000);
if(!capture.isOpened())
{cout<<"error opening video"<<endl;return -1;}
else
{
capture>>frame_old;
cvtColor(frame_old,gray_old,COLOR_BGR2GRAY);
goodFeaturesToTrack(gray_old,points,MAX_COUNT,0.001,1,Mat(),3,0,0.04);
cornerSubPix(gray_old,points,SubPixelWinSize,Size(-1,-1),termcrit);
for(;;)
{
Mat framenew;
Mat gray;
capture>>framenew;waitKey(10);
cvtColor(framenew,gray,COLOR_BGR2GRAY);
calcOpticalFlowPyrLK(gray_old,gray,points,pointsnew,status,err,winSize,3,termcrit,0,0.001);
size_t i,k;
for(i=k=0;i<pointsnew.size();i++)
{
if(!status[i])
continue;
pointsnew[k++]=pointsnew[i];
Point p1,p2;
p1.x= (int)points[i].x;
p1.y= (int)points[i].y;
p2.x= (int)pointsnew[i].x;
p2.y= (int)pointsnew[i].y;
line(framenew,p1,p2,Scalar(0,255,0),3,8,0);
}
pointsnew.resize(k);
swap(points,pointsnew);
gray.copyTo(gray_old);
imshow("new",framenew);
waitKey(10);
}
}
return 0;
}
Таким образом, при работе с этим у меня есть только движущиеся точки с движущимися людьми, нет линий вдоль пути. Несколько раз для некоторых людей без каких-либо точек. И точки находятся в фоновом режиме (я имею в виду на статическом основании. Это не движение). Я пытался изменить параметры, но не повезло.
видео я использовал https://www.youtube.com/watch?v=H7BrVzdOzc4
Вопросы 1.Why я получаю эти плохие результаты? Почему линии отслеживания не рисуются (существуют только точки)? 2. Какие изменения необходимо сделать, чтобы получить правильный результат?
Я использовал создателя Qt с визуальной студией 2010, opencv 2.4.8, средой Windows 7.
Подумайте, мое объяснение ясное.
Любая помощь будет высоко оценена .. Спасибо !!!!