JoQeR
Пользователи-
Количество публикаций
39 -
Зарегистрирован
-
Посещение
Все публикации пользователя JoQeR
-
Мой модуль авторизации делает практически тоже самое)) Чтобы не более одного человека было и тд)
-
Спасибо! А тема диссертации какая?
-
Ребят! Всем огромнейшее спасибо за помощь и ответы на вопросы) Во многом благодаря этому форуму, сегодня защитил на отлично дипломный проект с темой "авторизации пользователя ИС с помощью веб-камеры") Отдельное спасибо главному админу Надеюсь, форум будет развиваться и подчерпну еще много нового от сюда)
-
To Flame. На хабре прочитал статью, интересно, но решил, что взять и установить порог по расстоянию Махаланобиса и не ваять сложный велосипед (реализация есть в с++ на том же хабре + ссылку здесь выкладывали на полное руководство). Очень хотелось поэксперементить)
-
Я для эксперемента яндекс картинки пробовал искать , лица", "лицо человека", там конечно много ереси вылезает. В основном звезды. Кстати, насчет звезд, на кинопоиске куча фотографий хорошего качества звезд)
-
Реализовал все это дело, чисто порогом расстояния) Но точность распознавания, т.е. сам этот порог жутко зависит от совещения( Может есть какие то моменты и нюансы, чтобы лучше справлялся алгоритм собственными средствами?
-
Flame, а как ты реализовал сам отсев неприсутствующих в БД? Примерный алгоритм или как изменить программу. Можешь поделиться?
-
Flame. В статье Распознавание с помощью PCA делается на Евклидовом расстоянии. Но в конце указывается что изменить, чтобы использовать расстояние Махаланобиса. Вот кусок этого текста:
-
timer1->Stop(); <-- это у меня остановка таймера, который отвечает за воспроизведение кадров в pictureBox. Спаибо за ответ, очень похоже что у меня как раз эта проблема. Но т.к. я еще новичек в этом деле, особенно с таймерами. Что есть функция обратного вызова у таймера Windows Forms? У системного таймера есть такая функция.
-
Эх, а что ж делать с моим багом при релизной версии? Может туплю п острашному. Нашел еще один момент. Для того чтоб получить при фотографировании картинку качества получше, увеличиваю разрешение считываемого кадра, т.к. видео с камеры отображается в миниатюрном окошке, если убрать это изменение кадра, то все работает, но фото конечно отстойного качества. Может надо как то оптимизировать эту задачу? Хотя все тоже - на ноуте работает с любыми настройками. timer1->Stop();// Counter = 0; //счетчик времени для показа "Данные записаны в БД" //BuffCount =0; cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 1280); cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 1024); frame = cvQueryFrame( capture ); //-------/возврат к миниатюрному изображению/-----------// cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, WidthFrame); cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, HieghtFrame); Спасибо еще раз, за ваши ответы!
-
Нет, в отладочной версии еще при запуске "Возникла точка останова" и на ноуте и на компе. Но я отладочную версю запускал с библиотеками OpenCV для релизной версии. Может из-за этого? Я еще думал что мож из-за фреймворка такое может быть каким то образом? Хотя и на ноутбуке и на компьютере ставился новый 4,5 вроде со студией. Приложение я пытаюсь сделать на 3-м фреймворке. Реально уже не знаю, что придумать. Еще есть такое, что без нахождения лица работает стабильно. Может слишком много дейсвий при нажатии кнопки происходит и 32-х разрядная система не справляется? Хотя вроде ересь.
-
Если не секрет, как это сделать?) На компьютере где висне стоит ОС 32 разрядная. На ноуте 64-х. Где именно копилировать надо? И как поменять настойки сборки, чтобы это сделать.
-
Нужен совет! Последния два дня меня убивает непонятная вещь, а именно виснет приложение, которое фотографирует, находит лицо ресайзит его и записывает в БД на компьютере. Причем оно виснет оно самым странным образом. 1)Запускаю приложение. При этом сразу отображается видео с камеры на форму. 2)Нажимаю кнопку сфотографировать. 3)Находит лицо. 4)Фотографирует, ресайзит и сохраняет в БД все успешно. 5)Видео продолжает отображаться и вроде все впорядке. Можно даже нажать "Закрыть" и все закроется как надо. НО 6) Если взять окно и попробовать перетащить его, сразу же "Завершена работа программы.." и "Widows ищет поиск решения данной проблемы.." Еще одно - на ноутбуке все работает замечательно, ничего подобного не происходит. Практически всё идентично: ОС Windows 7, MS Visual Studio 2010, MS SQL 2008, разве что на ноутбуке стоит 64-х разрядная система. Думал, что может из-за веб камеры. Но поставил камеру с компьютера на ноутбук, там и с этой камерой все работает прекрасно. К тому же иногда работает все прекрасно и на компьютере. В связи с чем такое может быть, куда смотреть, что делать даж не знаю. Может у кого то были подобные проблемы? Спасибо за ваши ответы!
-
Привожу пример подобного кода, только с выделением лица, без глаз. [code] // FaceDetectAndTrack.cpp #include <stdafx.h> #include <cv.h> #include <highgui.h> #include <stdlib.h> #include <stdio.h> #include <string> #include <iostream> using namespace std; using namespace cv; void detectFace(IplImage *FaceIm); //Глобальные переменные CvSeq * pFaceRectSeq; // list of detected faces CvHaarClassifierCascade * pCascade; // каскад для нахождения лиц CvMemStorage * pStorage; // хранилище памяти int main( int argc, const char** argv ){ IplImage * pInpImg; const char* cascade_name = "haarcascade_frontalface_alt.xml"; pStorage = cvCreateMemStorage(0); pCascade = (CvHaarClassifierCascade *)cvLoad(cascade_name, 0, 0, 0 ); // initializations //* filename = argc == 2 ? argv[1] : "d:/StudentDetect1.jpg"; //IplImage * pInpImg = cvLoadImage(filename,1); //Проверка инициализируемых данных if( !pInpImg || !pStorage || !pCascade ){ printf("Initialization failed: %s \n", (!pInpImg)? "didn't load image file" : (!pCascade)? "didn't load Haar cascade -- " "make sure path is correct" : "failed to allocate memory for data storage"); exit(-1); } CvCapture *capture = cvCreateCameraCapture(CV_CAP_ANY); //CvCapture *capture = cvCreateCameraCapture(1); assert(capture); while(true){ pInpImg = cvQueryFrame( capture ); //Применяем функцию детектирования к каждому кадру detectFace(pInpImg); // показываем cvShowImage("Haar Window", pInpImg); char c = cvWaitKey(33); if (c == 27) { // нажата ESC break; } } // display face detections //cvShowImage("Haar Window", pInpImg); //cvWaitKey(0); //показываем результат в окне cvDestroyWindow("Haar Window"); //освобождаем все ресурсы cvReleaseImage(&pInpImg); if(pCascade) cvReleaseHaarClassifierCascade(&pCascade); if(pStorage) cvReleaseMemStorage(&pStorage); return 0; } void detectFace(IplImage *FaceIm){ int i; // Применяем функцию детектирования с заданными параметрами pFaceRectSeq = cvHaarDetectObjects (FaceIm, pCascade, pStorage, 1.2, // increase search scale by 10% each pass 6, // drop groups of fewer than three detections //CV_HAAR_DO_ROUGH_SEARCH //|CV_HAAR_SCALE_IMAGE CV_HAAR_DO_CANNY_PRUNING, // skip regions unlikely to contain a face cvSize(50,50)); // use XML default for smallest search scale // create a window to display detected faces cvNamedWindow("Haar Window", CV_WINDOW_AUTOSIZE); // draw a rectangular outline around each detection for(i=0;i<(pFaceRectSeq? pFaceRectSeq->total:0); i++ ){ CvRect * r = (CvRect*)cvGetSeqElem(pFaceRectSeq, i); CvPoint pt1 = { r->x, r->y }; CvPoint pt2 = { r->x + r->width, r->y + r->height }; cvRectangle(FaceIm, pt1, pt2, CV_RGB(0,255,0), 3, 4, 0); } }
-
Как конвертировать нашел. Функция cvCvtColor(img, im2, CV_BGR2GRAY). Но про необходимость этого конвертирования вопрос актуален)
-
Еще вопросик есть по этой теме. Для распознавания лица методом главных компонент обязательно преобразовывать цветное изображение в градации серого? Как в этом ПРИМЕРЕ . И если обязательно, то как это сделать? Наверняка есть какая то встроенная функция, но поискав я нашел только работу с каналами RGB. Пробовал копировать 3-х канальное изображение в созданное вот таким методом cvCreateImage( STD_SIZE, IPL_DEPTH_8U, 1 ), сразу вылезает ошибка. Я так понял что нельзя запихнуть автоматом цветное изображение в черно-белое. Как быть?
-
Спасибо большое! Применил cvSetImageROI, все прекрасно работает под C++/cli.
-
Есть вопрос, подскажите пожалуйста! Я нахожу в кадре лицо каскадами Хаара. Затем выделяю найденную область(как в примере прямоугольником). Как мне найденную область фотографии сохранить в JPG и сделать строго определенного размера? Например 100х100 пикселей. Спасибо.
-
С марковскими моделями не стал разбираться, а с PCA сразу с ходу пошло дело. Неплохо работает! Мануал на английском тема)
-
Я так понял пример программы, который вы прикрепили в начале топика, это на C Builder? Ниразу просто с ним не работал и не встречался) Не имеется подобного проекта для Visual studio с++/cli? А по поводу статьи на хабре, очень доступно, врочем как и всегда, спасибо)
-
Да, все это здорово, но все это чистая математическая теория, без практической реализации на какой-либо платформе. Вы пробовали использовать программу выложенную в начале темы, со своими наборами фотографий? Или только стандартные?
-
Всем привет! Очень сложная тема и с ходу почему то не дается. Пытаюсь применить для MS Visual studio 2010 c++/cli. Может у кого-нибудь завалялись руководства или ссылки на них, был бы очень признателен) Что то вроде такого, пусть даже на английском Детектирование Лиц Каскадами Хаара
-
Решил проблемму с закрытием процесса, но по-моему как то по извращенски просто переопределив переменную в обработчике закрытия формы. Потому что static у CvCapture *capture, ничего не изменил и не устранил ошибку с cvReleaseCapture: private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { CvCapture *capture; // Переопределяем capture и удаляем этот объект timer1->Stop(); capture = cvCreateCameraCapture(CV_CAP_ANY); cvReleaseCapture(&capture); this->Close(); }
-
Чет всё равно не удается закрыть процесс( Что еще можно сделать? Что именно с cvWaitKey() проделать? И зачем делать capture статиком?
-
На самом деле пробовал я удалять с помощью delete image, всё равно растет. Единственно что утешает, это что память занимается очень медленно, иногда чуток убывает. Но все равно спасибо вам)