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

В чем разница для программы camshift между изображением с камеры и просто jpeg картинкой?

Recommended Posts

Что-то я не врублюсь никак где затык. Т.е. всё рисует, строб в виде эллипса рисует, но например во внешнем редакторе выдираешь ту часть которая в стробе, перемещаешь, сохраняешь, программа картинку обновляет а строб где стоял там и стоит. Т.е. собственно шифтинг почему-то не работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то я не врублюсь никак где затык. Т.е. всё рисует, строб в виде эллипса рисует, но например во внешнем редакторе выдираешь ту часть которая в стробе, перемещаешь, сохраняешь, программа картинку обновляет а строб где стоял там и стоит. Т.е. собственно шифтинг почему-то не работает

если надо текст программы могу привести (см вложение)

Text file.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

что, никто никогда не пробовал сделать подобного-не надо было?

Хотя бы ради прикола попробуйте. lkdemo кстати тоже не работает с картинками. То есть, конкретно-картинки перерисовываются, а точки где стояли-там и стоят. Вот хоть убейте не понимаю в чем разница с ави/потоком с камеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это я бы вынес из цикла. Пожалейте HDD :) .

И еще goto считается очень плохим тоном программирования, юзайте лучше while или for.


label1:

image1 = cvLoadImage( "lena.jpg", 1 );
if (image1==NULL)
goto label1;





cvNamedWindow( "source", 1 );
cvSetMouseCallback( "source", on_mouse, 0 );
//cvCreateTrackbar( "Vmin", "source", &vmin, 256, 0 );
//cvCreateTrackbar( "Vmax", "source", &vmax, 256, 0 );
//cvCreateTrackbar( "Smin", "source", &smin, 256, 0 );



if (!image)
{
image = cvCreateImage( cvGetSize(image1), 8,3 );
image->origin = image1->origin;

hsv = cvCreateImage( cvGetSize(image1), 8,3);
//
hue = cvCreateImage( cvGetSize(image1), 8, 1 );
mask = cvCreateImage( cvGetSize(image1), 8, 1 );
backproject = cvCreateImage( cvGetSize(image1), 8, 1 );
hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 );
histimg = cvCreateImage( cvSize(320,200), 8, 3 );
cvZero( histimg );
}
[/code] и это в конец программы:
[code] cvReleaseImage(&image1);
cvReleaseImage(&image);
cvReleaseImage(&hue);
cvReleaseImage(&hsv);
cvReleaseImage(&backproject);

Еще попробуйте посмотреть значения selection,mask, и backproject.

Или загрузите AVI под отладчиком и прогоните покадрово, все станет понятно.

И еще посмотрите (я не уверен), у Вас if (!image), а cvReleaseImage(&image); точно обнуляет указатель? Я обычно для верности еще делаю image=0;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я пробовал и со стандартными вариантами программы camshift и/или lkdemo не работают они для jpegoв. Достаточно выкинуть считывание с камеры/ави и заменить его на cvLoadImage. Перерисовка кадра будет,а работа со слежением-не будет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
я пробовал и со стандартными вариантами программы camshift и/или lkdemo не работают они для jpegoв. Достаточно выкинуть считывание с камеры/ави и заменить его на cvLoadImage. Перерисовка кадра будет,а работа со слежением-не будет

вестимо потому, что нужно несколько кадров?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×