Перейти к содержимому
Compvision.ru

KOROVIN

Пользователи
  • Количество публикаций

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О KOROVIN

  • Звание
    Новичок
  1. То что вы предлагаете закомментировать вообще никогда не выполняется в данном листинге. давайте я попробую объяснить в самом начале я получаю кадр и спрашиваю "а первый ли это кадр?" Если да, то я снимаю размер и создаю все остальные изображения с размером моего фрейма НО применить метод cvCalcOpticalFlowFarneback Я не могу потому что мне надо хотя бы два изображения в оттенках серого - текущее и предыдущее поэтому я не захожу в цикл if (!first) {} после САМОГО ПЕРВОГО ПРОХОДА Я естесственно обнуляю first=false; и сохраняю "предыдущий кадр" cvCopy(gray,prevgray,NULL); все ! первый проход сделан, начинаем второй проход cvCvtColor(frame1,gray,CV_BGR2GRAY); - этой строчкой я сохраняю текущий кадр в оттенках серого и так как это уже не первый проход - захожу в функцию cvCalcOpticalFlowFarneback(prevgray,gray,&flow,0.5, 3, 15, 3, 5, 1.2,0); на что у меня выдается ошибка , скорее всего потому что flow у меня это flow = cvMat(c.height, c.width, CV_32FC2, NULL ); но значения ее ячейкам не заданы ! надо наверное им всем присвоить нули, но я не знаю как....
  2. Проверял эти параметры кучу раз, там ничего не портится, мне кажется вся проблема в cvMat которую я не правильно задаю. где бы мне посмотреть пример кода, как использовать эту функцию (для расчета оптического потока) ? p.s В CvMat мне кажется я неправильно задаю кол-во строк и столбцов, как то по другому надо... p.p.s код брал из книги "распознавание объектов" Кручинина
  3. Уважаемые форумчане! Добрый день. подскажите где ошибка, хочу воспользоваться функцией cvCalcOpticalFlowFarneback. Но код выдает ошибку! Пожалуйста помогите! #include "StdAfx.h" #include "cv.h" #include "highgui.h" CvCapture* g_capture = NULL; int main(int argc, char** argv) { cvNamedWindow("Example", CV_WINDOW_AUTOSIZE ); g_capture=cvCreateFileCapture("E:\\Станислав\\T_CAMERA.avi"); bool first=true; IplImage* frame; IplImage* frame1=0; int i=0; IplImage* prevgray; IplImage* gray; CvMat flow; IplImage* cflow; while(1) { frame = cvQueryFrame( g_capture ); if( !frame ) break; cvShowImage( "Example", frame ); /*стандартная часть*/ if (first) { CvSize c = cvGetSize(frame); frame1=cvCreateImage(c,8,3); gray = cvCreateImage(c,8,1); prevgray = cvCreateImage(c,8,1); flow = cvMat(c.height, c.width, CV_32FC2, NULL ); } cvResize(frame,frame1,0); cvCvtColor(frame1,gray,CV_BGR2GRAY); if (!first) { cvCalcOpticalFlowFarneback(prevgray,gray,&flow,0.5, 3, 15, 3, 5, 1.2,0); //вот здесь выдается ошибка на второй итерации !! cvCvtColor(prevgray,cflow, CV_GRAY2BGR); // cvShowImage("flow",cflow); } /*конец блока*/ char c = cvWaitKey(0); if( c == 27 ) break; first=false; i++; cvCopy(gray,prevgray,NULL); } return 0; }
  4. Трекинг объектов.

    Добрый день, уважаемые Форумчане! Прочитал данную тему - заинтересовался, передо мной стоит задача, похожая на первую, озвученную в этой теме... В другом топике нашел вот видео хочется сделать как на картинке, почитал че предлагают, просмотрел коды. Какие методы можно использоваться для решения моей задачи? Каскады Хаара не подойдут скорее всего, так как вид сверху. Возможно использовать оптический поток функцией void calcOpticalFlowFarneback или Лукас Канаде?
×