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

nikrubab

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

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

  • Посещение

Все публикации пользователя nikrubab

  1. Всем доброго времени суток! Как говорится ,чем дальше в лес,тем больше дров! вот и в моем случае так же. Изначально надо было лишь организовать подсчет распознанных лиц в кадре.но как только с этой задачей справился,стало интересно на основе какого метода все это дело у меня работает.Стал читать и еще больше запутался... Кто может подсказать ,по какому методу идет распознавание лиц в этом и в этом #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h> using namespace std; using namespace cv; /** Function Headers */ void detectAndDisplay( Mat frame ); /** Global variables */ String face_cascade_name = "haarcascade_frontalface_alt.xml"; String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml"; CascadeClassifier face_cascade; CascadeClassifier eyes_cascade; string window_name = "Capture - Face detection"; RNG rng(12345); /** @function main */ int main( int argc, const char** argv ) { CvCapture* capture; Mat frame; //-- 1. Load the cascades if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; }; if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; }; //-- 2. Read the video stream capture = cvCaptureFromCAM( -1 ); if( capture ) { while( true ) { frame = cvQueryFrame( capture ); //-- 3. Apply the classifier to the frame if( !frame.empty() ) { detectAndDisplay( frame ); } else { printf(" --(!) No captured frame -- Break!"); break; } int c = waitKey(10); if( (char)c == 'c' ) { break; } } } return 0; } /** @function detectAndDisplay */ void detectAndDisplay( Mat frame ) { std::vector<Rect> faces; Mat frame_gray; cvtColor( frame, frame_gray, CV_BGR2GRAY ); equalizeHist( frame_gray, frame_gray ); //-- Detect faces face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); for( int i = 0; i < faces.size(); i++ ) { Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 ); ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 ); Mat faceROI = frame_gray( faces[i] ); std::vector<Rect> eyes; //-- In each face, detect eyes eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) ); for( int j = 0; j < eyes.size(); j++ ) { Point center( faces[i].x + eyes[j].x + eyes[j].width*0.5, faces[i].y + eyes[j].y + eyes[j].height*0.5 ); int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 ); circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 ); } } //-- Show what you got imshow( window_name, frame ); } примерах с сайта 1 и 2 соответственно . Там что то про Виола-Джонс говорится,но насколько я понял,Виола-Джонс это набор нескольких методов ,то есть это скорей методика. Проясните пожалуйста
  2. супер!очень доступно!спасибо Вам огромное!
  3. хорошо,допустим что так. тогда не понятно следующее.мне надо обосновать выбор Виолы-Джонса и произвести сравнительный анализ аналогичных методов.так вот чем больше читал тем больше запутывался Виола-Джонс это вообще никак не альтернатива PCA ,HMM ?это что то другое? Вы пишите "РСА ....применяемый и для распознавания лиц в том числе" то есть по сути выступает как замена Виолы?? И да,самое главное,в приведенных мною выше примерах в основе что ?Как описать код можно?Что там реализован метод Виолы-Джонса и точка?или там смесь разных алгоритмов,в том числе РСА,НММ ? сорри что походу туплю,но сроки жмут и откладывать некуда дальше.. спасибо за понимание!
  4. я просто делаю обзорную часть и мне надо описать метод который тут используется. исходя из вашего последнего замечания и пришел к выводу что сослаться на Виола-Джонса будет не совсем корректно. а как тогда пояснить это можно?ну что бы было не как "черное с круглым"
  5. спасибо за ответ! то есть в этом коде реализован метод Виолы-Джонса и это полностью самостоятельный метод, такой как например "Скрытые Марковские модели" или "Метод главных компонент" ??
  6. Оптимизация кода

    Добрый день ! Вот есть код : #include "StdAfx.h" #include <opencv2/opencv.hpp> #include <opencv2/core/core_c.h> #include <opencv2/core/core.hpp> #include <opencv2/calib3d/calib3d.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/imgproc/imgproc_c.h> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui_c.h> #include <opencv2/highgui/highgui.hpp> #include <opencv2/objdetect/objdetect.hpp> #include <C:\videoInput0.1995\compiledLib\compiledByDevCpp\include\videoInput.h> #include <process.h> #include <stdio.h> #include <vector> #include <iostream> using namespace cv; # pragma comment(lib, "C:/videoInput0.1995/compiledLib/compiledByCW/videoInput.lib") static CvMemStorage* storage = 0; static CvHaarClassifierCascade* cascade = 0; const char* cascade_name = "C:/OpenCV2.2/data/haarcascades/haarcascade_frontalface_default.xml"; double scale = 1; CvSeq* contours = 0; void detect_and_draw( IplImage* image); void Init(); CvFont myFont; char text_buf[20]; int _tmain(int argc, _TCHAR* argv[]) { Init(); return 0; } void Init() { IplImage *frame_copy = 0; IplImage *image = 0; int i; const char* input_name = 0; cvInitFont(&myFont, CV_FONT_HERSHEY_COMPLEX, 0.7, 1, 0, 1, 8); //Загрузка базы данных, обученной на детектирование лиц в Фас cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); //Создание хранилища памяти storage = cvCreateMemStorage(0); cvNamedWindow( "result", 1 ); //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // создание объекта videoInput videoInput VI; // получение списка доступных видеоустройств, возвращается число устройств int numDevices = VI.listDevices(); int device1=0; // первое найденое видеоустройсво из списка // частота кадров VI.setIdealFramerate(device1, 15); // указываем разрешение VI.setupDevice(device1, 500, 400, VI_COMPOSITE); //VI.showSettingsWindow(device1); // показать окошко настроек камеры // создаём картинку нужного размера image = cvCreateImage(cvSize(VI.getWidth(device1),VI.getHeight(device1)), IPL_DEPTH_8U, 3); while(1){ if (VI.isFrameNew(device1)){ // первый параметр - индекс видеоустройсва // второй - указатель на буфер для сохранения данных // третий - флаг, определяющий менять ли местами B и R -составляющий // четвёртый - флаг, определяющий поворачивать картинку или нет VI.getPixels(device1, (unsigned char *)image->imageData, false, true); // получение пикселей в BGR // if( image ) { //Производим детектирование detect_and_draw( image); } } char c = cvWaitKey(33); if (c == 27) { // ESC break; } } //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ } void detect_and_draw( IplImage* img ) { static CvScalar colors[] = { {{0,0,255}}, {{0,128,255}}, {{0,255,255}}, {{0,255,0}}, {{255,128,0}}, {{255,255,0}}, {{255,0,0}}, {{255,0,255}} }; IplImage *gray; int i, j; gray = cvCreateImage( cvSize(img->width,img->height), 8, 1 ); //cvCvtColor( img, gray, CV_BGR2GRAY ); cvClearMemStorage( storage ); if( cascade ) { double t = (double)cvGetTickCount(); CvSeq* faces = cvHaarDetectObjects( img, cascade, storage, 1.1, 2, 0|CV_HAAR_DO_CANNY_PRUNING,cvSize(30, 30) ); t = (double)cvGetTickCount() - t; printf( "detection time = %gms\n", t/((double)cvGetTickFrequency()*1000.) ); sprintf(text_buf,"find faces:%d",faces->total); cvPutText(img, text_buf, cvPoint(5,40), &myFont, cvScalar(255,255,255)); for( i = 0; i < (faces ? faces->total : 0); i++ ) { CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); CvMat small_img_roi; CvSeq* nested_objects; CvPoint center; CvScalar color = colors[i%8]; int radius; center.x = cvRound((r->x + r->width*0.5)*scale); center.y = cvRound((r->y + r->height*0.5)*scale); radius = cvRound((r->width + r->height)*0.25*scale); cvCircle( img, center, radius, color, 3, 8, 0 ); }} cvShowImage( "result", img ); cvWaitKey(1); cvReleaseImage( &gray ); } Почему то сильно тормозит картинка,получаемая с веб камеры . по умолчанию значение cvWaitKey(1) было 1000 .сейчас 1 и стало шустрее,но недостаточно. + время обнаружения порядка 500мс а если людей в кадре несколько то и более. Как можно улучшить эти показатели?
  7. Оптимизация кода

    Доброго дня! подскажите пожалуйста ресурс,где можно почитать про то как работать с GPU в opencv ? iskees можете показать код программы с помощью которой вы тестировали? я просто с английским не очень,и поэтому возникают трудности..
  8. Оптимизация кода

    спасибо за совет! а как задействовать видеоядро? кстате начал разбираться с этим и на сайте ссылка пишет чел вот ,что : "Чтобы сравнить производительность вычислений на видеокарте и на процессоре я написал несколько тестов производительности на базе Qt. Можете их скачать здесь. К моему удивлению, у меня видеокарта nvidia GeForce 9600M GS считает в разы медленнее чем процессор intel Centrino 2." по сути это мое железо.может и не стоит мне связываться тогда с этим?
  9. Оптимизация кода

    благодарю за ответ! 1)LBP каскад есть уже обученный?подключать его так же как и Хааровский? 2)насколько я знаю по умолчанию используется лишь одно ядро процессора. у меня их два.возможно есть смысл для начала его задействовать? если знаете как,подскажите пожалуйста 3)то есть просто следить за найденным лицом?есть примеры гденть такого кода?сам боюсь не осилю с нуля 4)да у меня и так берется 500 на 400.уменьшать не вариант.хотелось бы наоборот увеличить... CPU Intel Core 2 Duo P8400 по 2.3 Ггц на ядро GPU Nvidia 9600M GT 512Mb Диск SAMSUNG HM500JI 5400 об/мин ОЗУ 3Гб ddr2 время детектирования если в кадре один человек и хорошее освещение то около 400мс. если плохое ,то около 600. ну и с появлением нескольких лиц в кадре где то плюс 200мс
  10. Оптимизация кода

    спасибо за ответ! это уже опробовал. в первом случае не подходит так как надо искать и считать всех кто есть в кадре,а второе не подходит по причине того,что начинает пропускать лица ,которые дальше эмм..ну примерно метра ,2х от камеры. Есть еще что то?или это плата за бесплатное пользование библиотеки?
  11. Подсчет людей в кадре

    Всем доброго времени суток! Такая задача: Есть программа ,которая обнаруживает людей на видео .Ну и на фото тоже.В основе программы openCV. Допустим в кадре находяться 10 человек,все они обнаружены программой. Вот как их посчитать теперь? Допустим взять кадр из видео-потока,и вычислить координаты,на которых расположены распознанные лица. И потом сравнивать координаты между собой (например у первого лица координаты верхнего левого и нижнего правого углов 130 и 110 ,для второго 100 и 90 и тд)и добавить счетчик. Или может как то проще это можно сделать? программа с которой работаю находиться тут sqface там же и пример фото с обнаруженными на ней людьми
  12. Подсчет людей в кадре

    ок.это я понял.а как это реализовать? как понять faces.size() вернет количество лиц ?? чтобы она что то вернула это как то прописать надо.вот как я не знаю .. подскажите ,что почитать по теме можно,что бы я понял о чем эти строки
  13. Подсчет людей в кадре

    спасибо за разъяснение! с этим туториалом уже ознакомился.даже побаловался через свою вебку. почему то подтормаживает сильно картинка.. но меня больше всего волнует как организовать подсчет людей в кадре и вывод этой информации на экран mrgloom писал выше про это ,но я пока не смог осознать ,на что влияют эти строки и как их использовать в моих интересах.
  14. Подсчет людей в кадре

    за мысли спасибо! вот только теперь возможно глупый,но все же вопрос. как откомпилировать facedetect.cpp ? пробовал создавать новый проект,прописывал библиотеки все по инструкции.пробовал заменять код в рабочем приложении на код из facedetect.при компиляции консоль выскакивает,там быстро идет текст и пропадает. в output пишет следующее: The program '[3960] openCV_FaceTracking.exe: Native' has exited with code -1 (0xffffffff). UPD откомпилировал.заработало.только почему то изображение с вебкамеры подвисает изрядно.и глаза плохо распознаются. кто может объяснить что это значит? 'fd.exe': Loaded 'C:\Users\Dima Baburkin\Documents\Visual Studio 2010\Projects\fd\Debug\fd.exe', Symbols loaded. 'fd.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\opencv\build\x86\vc10\bin\opencv_core243d.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\opencv\build\x86\vc10\bin\opencv_imgproc243d.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\opencv\build\x86\vc10\bin\opencv_highgui243d.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\opencv\build\x86\vc10\bin\opencv_objdetect243d.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\msvcp100d.dll', Symbols loaded. 'fd.exe': Loaded 'C:\Windows\System32\msvcr100d.dll', Symbols loaded. 'fd.exe': Loaded 'C:\Windows\System32\user32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\gdi32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\ole32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\oleaut32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\advapi32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.9200.16384_none_bf100cd445f4d954\comctl32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\avifil32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\msvfw32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\avicap32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\combase.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\rpcrt4.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\sechost.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\winmm.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\msacm32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\shell32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\version.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\winmmbase.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\shlwapi.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\imm32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\msctf.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\cryptbase.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\bcryptprimitives.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\uxtheme.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Program Files\Punto Switcher\pshook.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\imagehlp.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\SHCore.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\clbcatq.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\devenum.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\setupapi.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\cfgmgr32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\devobj.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\ntmarta.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\wintrust.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\crypt32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\msasn1.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\msdmo.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\qcap.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\quartz.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\dwmapi.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\ksproxy.ax', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\ksuser.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\d3d9.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\vidcap.ax', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\Kswdmcap.ax', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\mfc42.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\odbc32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\qedit.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\comdlg32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.9200.16518_none_ba1cf6b7e09f1918\GdiPlus.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\ddraw.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\dciman32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\nvd3dum.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\psapi.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\powrprof.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\d3dim700.dll', Cannot find or open the PDB file 'fd.exe': Unloaded 'C:\Windows\System32\powrprof.dll' 'fd.exe': Unloaded 'C:\Windows\System32\psapi.dll' 'fd.exe': Unloaded 'C:\Windows\System32\nvd3dum.dll' 'fd.exe': Loaded 'C:\Windows\System32\nvd3dum.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\psapi.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\powrprof.dll', Cannot find or open the PDB file 'fd.exe': Unloaded 'C:\Windows\System32\powrprof.dll' 'fd.exe': Unloaded 'C:\Windows\System32\psapi.dll' 'fd.exe': Unloaded 'C:\Windows\System32\nvd3dum.dll' 'fd.exe': Loaded 'C:\Program Files\K-Lite Codec Pack\Filters\ffdshow\ffdshow.ax', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.9200.16384_none_893961408605e985\comctl32.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\dinput.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\sspicli.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Program Files\K-Lite Codec Pack\Filters\vsfilter.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\winspool.drv', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\wininet.dll', Cannot find or open the PDB file 'fd.exe': Loaded 'C:\Windows\System32\iertutil.dll', Cannot find or open the PDB file The thread 'Win32 Thread' (0xc4c) has exited with code 0 (0x0). 'fd.exe': Loaded 'C:\Windows\System32\msyuv.dll', Cannot find or open the PDB file The thread 'Win32 Thread' (0x110c) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0xf04) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0xfb8) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0xc24) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0x15a4) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0x1508) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0x934) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0x9d8) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0x1728) has exited with code -1073741510 (0xc000013a). The thread 'Win32 Thread' (0x1038) has exited with code -1073741510 (0xc000013a). The program '[4348] fd.exe: Native' has exited with code -1073741510 (0xc000013a).
  15. Подсчет людей в кадре

    а можете пояснить что значит вектор ректов? и как это можно сделать?
  16. Подсчет людей в кадре

    а можно подробнее? я просто не так давно начал вникать в эту тему и был бы рад учиться у знающих
×