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

kseen

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

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

  • Посещение

Репутация

0 Новичек

О kseen

  • Звание
    Бывалый
  1. Распознавание лиц

    Есть еще вопрос. На данный момент точки, полученные при cvgoodfeaturestotrack() очень легко сбиваются при проведении рукой перед лицом. Что можно сделать в этом случае, чтобы сохранить положение точек и сделать их устойчивыми?
  2. Распознавание лиц

    Здравствуйте! Есть задача трэкинга лица в видеопотоке и сопровождения лица, специальным маркером, нарисованным сверху лица (маркер представляет собой прямоугольник небольшой высоты). Сделано: 1) Распознавание каскадами Хоара, при нажатии на кнопку. 2) Уменьшение прямоугольника, полученного с помощью каскадов на определённый процент (scaleFactor). (Для уменьшения области, на которой будут расположены точки при помощи cvGoodFeaturesToTrack(). Это сделано для увеличения точности трэкинга.) 3) Точки отслеживаются при помощи алгоритма пирамидального Lucas-Kanade. 4) Точки обводятся прямоугольнком, помжноженным на scaleFactor (см пункт 2). Пожалуйста, помогите разобраться со следующими пунктами: 1) Отсеивание точек трэкинга, "отвалившихся" от исходного лица. Как отсеивать такие точки? На данный момент я отсеиваю точки, находя центр скопления основных "правильных" точек трэкинга и вычисляю среднее Евклидово расстояние от центра скопления точек. Далее, перебираются все точки и те точки, у которых Евклидово расстояние от центра больше среднего отсеиваются. Думаю, надо использовать расстояние Махаланобиса. Но так и не понял как его использовать. В функции есть три параметра: два одномерных вектора и ковариационная матрица. Насколько я понял, ковариационная матрица как раз-таки задаёт "скопление" точек. Как использовать расстояние Махаланобиса для отсеива "отклеившихся" точек? 2) На данный момент необходимо вручную указывать системе, когда начинать цикличные попытки найти лицо при помощи каскадов. Как сделать автоматический "захват" лица при помощи каскадов? Всё дело в том, что каскады используют много ресурсов чтобы найти лицо в видеопотоке. Как можно избежать этого? Я думаю, надо смотреть разницу между кадрами и пытаться определять лица в разнице между кадрами. При несильном изменении каскады не будут использоваться вообще. Может быть надо использовать дополнительно цветовую идентификацию по цвету кожи к разнице? 3) Прямоугольник, обводящий отслеживаемые точки. Как правильно обводить точки прямоугольником таким образом, чтобы прямоугольник точно покрывал лицо и не выходил за его пределы? 4) Как избежать "дрожания" обводящего прямоугольника? Понимаю, что необходимо использовать какой-то фильтр. Буду благодарен ответам на вышепоставленные вопросы и любым замечаниям по поводу данной темы. Спасибо за внимание!
  3. Проблема с cvCvtColor

    Спасибо за помощь, Андрей!
  4. Проблема с cvCvtColor

    Библиотеки подключил, действительно в релиз версии все заработало! Мне теперь всегда использовать release версию вместо debug? В чем отличие библиотек в каждой из этих конфигураций?
  5. Проблема с cvCvtColor

    Пробую запустить релиз версию с кодом, который был в предыдущем моём сообщении, получаю вот это: 1>------ Построение начато: проект: opencvsample, Конфигурация: Release Win32 ------ 1>Компиляция... 1>opencvsample9.cpp 1>Компоновка... 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvCvtColor" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvFindContours" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvSetZero" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvCreateImage" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvWaitKey" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvGetSize" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvDrawContours" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvCreateMemStorage" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvNamedWindow" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvThreshold" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvQueryFrame" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvCreateCameraCapture" 1>opencvsample9.obj : error LNK2001: неразрешенный внешний символ "_cvShowImage" 1>C:\opencvsample\opencvsample\Release\opencvsample.exe : fatal error LNK1120: 13 неразрешенных внешних элементов 1>Журнал построения был сохранен в "file://c:\opencvsample\opencvsample\Release\BuildLog.htm" 1>opencvsample - ошибок 14, предупреждений 0 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== [/codebox]
  6. Проблема с cvCvtColor

    Заменил на тот вариант, который используете Вы, соответственно код стал: #include <cv.h> #include <highgui.h> IplImage* g_image = NULL; CvMemStorage* storage = NULL; int main( int argc, char** argv ) { cvNamedWindow( "Contours", CV_WINDOW_AUTOSIZE ); CvCapture* capture = cvCreateCameraCapture(0); IplImage* g_image = cvQueryFrame(capture); if (g_image) { CvSeq* contours = 0; IplImage* g_gray = cvCreateImage(cvGetSize(g_image), g_image->depth, 1); cvCvtColor( g_image, g_gray, CV_BGR2GRAY ); cvThreshold( g_gray, g_gray, 100, 255, CV_THRESH_BINARY ); CvMemStorage* storage = cvCreateMemStorage(0); cvFindContours(g_gray, storage, &contours, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0)); //cvFindContours( g_gray, storage, &contours ); cvZero( g_gray ); if( contours ) cvDrawContours( g_gray, contours, cvScalarAll(255), cvScalarAll(255), 100 ); cvShowImage( "Contours", g_gray ); cvWaitKey(); } return 0; }[/codebox] При компиляции ошибок не обнаружено, при запуске та же злополучная ошибка, что я описал в начале топика.
  7. Проблема с cvCvtColor

    Все примеры компилируются без ошибок, но не все скомпилированные примеры, которые уже шли с OpenCV работают.
  8. Проблема с cvCvtColor

    Добавил проверку кадра и немного изменил код. Он стал таким: #include <cv.h> #include <highgui.h> IplImage* g_image = NULL; int main( int argc, char** argv ) { cvNamedWindow( "Contours", CV_WINDOW_AUTOSIZE ); CvCapture* capture = cvCreateCameraCapture(0); IplImage* g_image = cvQueryFrame(capture); if (g_image) { CvSeq* contours = 0; IplImage* g_gray = cvCreateImage(cvGetSize(g_image), g_image->depth, 1); cvCvtColor( g_image, g_gray, CV_BGR2GRAY ); cvThreshold( g_gray, g_gray, 100, 255, CV_THRESH_BINARY ); CvMemStorage* storage = cvCreateMemStorage(0); cvFindContours( g_gray, storage, &contours ); cvZero( g_gray ); if( contours ) cvDrawContours( g_gray, contours, cvScalarAll(255), cvScalarAll(255), 100 ); cvShowImage( "Contours", g_gray ); cvWaitKey(); } return 0; }[/codebox] Цикл захвата кадров с камеры не нужен: достаточно одного кадра с камеры. Если закомментировать эти строчки: [codebox]CvMemStorage* storage = cvCreateMemStorage(0); cvFindContours( g_gray, storage, &contours ); То всё работает. Если их оставить -- появляется та самая ошибка, про которую я говорил в начале. Какие у вас ещё есть предположения?
  9. Проблема с cvCvtColor

    Пожалуйста, привожу: cv200.dll!1002e4e4() [Указанные ниже фреймы могут быть неверны и (или) отсутствовать, символы для cv200.dll не загружены] ole32.dll!774f0b37() ole32.dll!774f0b52() ole32.dll!774ff4cb() ole32.dll!77500432() ole32.dll!774ed73c() quartz.dll!747e6e35() ole32.dll!774ff8c5() ntdll.dll!7c90cf5c() ntdll.dll!7c91a283() ntdll.dll!7c918f01() ntdll.dll!7c9192ef() ntdll.dll!7c918f01() ntdll.dll!7c9101bb() ntdll.dll!7c96d994() ntdll.dll!7c927553() ntdll.dll!7c927764() ntdll.dll!7c91003d() ntdll.dll!7c9101bb() ntdll.dll!7c9101bb() msvcrt.dll!77c1c3c9() msvcrt.dll!77c1c3e7() msvcrt.dll!77c1c42e() msvcrt.dll!77c1c42e() cv200.dll!101c9367() msvcrt.dll!77c1c3c9() msvcrt.dll!77c1c3e7() msvcrt.dll!77c1c42e() cxcore200.dll!0081766b() > opencvsample.exe!main(int argc=1, char * * argv=0x003f5a10) Строка 19 + 0x11 байт C++ opencvsample.exe!__tmainCRTStartup() Строка 582 + 0x19 байт C opencvsample.exe!mainCRTStartup() Строка 399 C kernel32.dll!7c817067() [/codebox]
  10. Проблема с cvCvtColor

    Здравствуйте! Не работает пример из "Learning Opencv" by Gary Bradski and Adrian Kaehler, страница 242, contours, Example 8-2. Вот код, который я пытаюсь запустить: #include <cv.h> #include <highgui.h> IplImage* g_image = NULL; IplImage* g_gray = NULL; CvMemStorage* g_storage = NULL; int main( int argc, char** argv ) { cvNamedWindow( "Contours", CV_WINDOW_AUTOSIZE ); CvCapture* capture = cvCreateCameraCapture(0); IplImage* g_image = cvQueryFrame(capture); g_gray = cvCreateImage( cvGetSize(g_image), 8, 1 ); g_storage = cvCreateMemStorage(0); CvSeq* contours = 0; cvCvtColor( g_image, g_gray, CV_BGR2GRAY ); cvThreshold( g_gray, g_gray, 100, 255, CV_THRESH_BINARY ); cvFindContours( g_gray, g_storage, &contours ); cvZero( g_gray ); if( contours ) cvDrawContours( g_gray, contours, cvScalarAll(255), cvScalarAll(255), 100 ); cvShowImage( "Contours", g_gray ); cvWaitKey(); return 0; }[/codebox] При компиляции ошибок не возникает. Ошибка возникает при работе программы, сразу же: Использую Visual Studio 2008, русская версия; OpenCV 2.0.0; Вывод: [codebox]"opencvsample.exe": Загружено: "C:\opencvsample\opencvsample\Debug\opencvsample.exe", Символы загружены. "opencvsample.exe": Загружено "C:\WINDOWS\system32\ntdll.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\kernel32.dll" "opencvsample.exe": Загружено: "C:\opencvsample\opencvsample\Debug\cv200.dll", Двоичный код не был построен с отладочной информацией. "opencvsample.exe": Загружено: "C:\opencvsample\opencvsample\Debug\libcxcore200.dll", Двоичный код не был построен с отладочной информацией. "opencvsample.exe": Загружено "C:\WINDOWS\system32\msvcrt.dll" "opencvsample.exe": Загружено: "C:\opencvsample\opencvsample\Debug\highgui200.dll", Двоичный код не был построен с отладочной информацией. "opencvsample.exe": Загружено "C:\WINDOWS\system32\advapi32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\rpcrt4.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\secur32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\comctl32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\gdi32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\user32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\ole32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\oleaut32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\avicap32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\winmm.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\version.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\msvfw32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\shell32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\shlwapi.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\avifil32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\msacm32.dll" "opencvsample.exe": Загружено: "C:\opencvsample\opencvsample\Debug\cxcore200.dll", Двоичный код не был построен с отладочной информацией. "opencvsample.exe": Загружено: "C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll", Символы загружены. "opencvsample.exe": Загружено "C:\WINDOWS\system32\imm32.dll" "opencvsample.exe": Загружено "C:\Program Files\Kaspersky Lab\Kaspersky Internet Security 7.0\adialhk.dll" "opencvsample.exe": Выгружено: "C:\Program Files\Kaspersky Lab\Kaspersky Internet Security 7.0\adialhk.dll" "opencvsample.exe": Загружено "C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\uxtheme.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\MSCTF.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\MSCTFIME.IME" "opencvsample.exe": Загружено "C:\WINDOWS\system32\clbcatq.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\comres.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\devenum.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\setupapi.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\wintrust.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\crypt32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\msasn1.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\imagehlp.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\msdmo.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\qcap.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\quartz.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\ksproxy.ax" "opencvsample.exe": Загружено "C:\WINDOWS\system32\ksuser.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\vidcap.ax" "opencvsample.exe": Загружено "C:\WINDOWS\system32\atl.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\kswdmcap.ax" "opencvsample.exe": Загружено "C:\WINDOWS\system32\mfc42.dll" "opencvsample.exe": Загружено: "C:\WINDOWS\system32\mfc42loc.dll", Двоичный код не был построен с отладочной информацией. "opencvsample.exe": Загружено "C:\WINDOWS\system32\qedit.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\comdlg32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\ddraw.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\dciman32.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\d3dim700.dll" "opencvsample.exe": Загружено "C:\WINDOWS\system32\msyuv.dll" Первый этап обработки исключения в "0x1002e4e4" в "opencvsample.exe": 0xC0000005: Нарушение прав доступа при чтении "0xffffffff". Необработанное исключение в "0x1002e4e4" в "opencvsample.exe": 0xC0000005: Нарушение прав доступа при чтении "0xffffffff". Устанавливал OpenCV по этой инструкции: http://nashruddin.com/OpenCV_2_0_Installat...ual_Studio_2008 Очень надеюсь на Вашу помощь и заранее большое спасибо!
×