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

Dmti

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

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

  • Посещение

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

  1. OpenCV для Processing

    Здравствуйте. На работе часто использую Processing, а тут попалась на глаза OpenCV для него, решил попробовать. Пробую примеры, пока не вижу смысла писать на нем - что-то серьёзное. Но возникли вопросы. В частности по команде: // detect anything ressembling a FRONTALFACE Rectangle[] faces = opencv.detect(); Не хочет работать, а никакого описания найти не могу. Может, кто знает, где почитать что-нибудь.
  2. OpenCV для Processing

    Все разобрался ваш пункт "Два" не внимательно прочитал. Спасибо.
  3. OpenCV для Processing

    Здравствуйте. Задали задачку :-)) Мы с вами разные библиотеки используем, у меня эта. Пока разобрался, пока нашел. Оказалась прямо в Processing ваша версия сидит, а я пол интернета облазил. Загрузил, разобрался, но распознавание также не работает. Так и не могу в Processing получить рамочку вокруг "морды лица".
  4. OpenCV для Processing

    Всем здравствуйте. Просто отзовитесь кто пробовал заставить Processing распознавать лица. Получилось нет? Второй вечер не чего не получается. И как работает opencv.detect это же HaarCascade значит где то должен загружаться классификатор. Вообще все не понятно.
  5. OpenCV для Processing

    Так я и говорю что установил и пробую примеры. Устанавливал как сказано сдесь. Инструкция по установки и ссылки для скачки. OpenCV использую давно в связке с Qt на работе всё видео наблюдение переделал. Processing использую для написания программки контроля приборов на планшете (так балуюсь). Вот и решил попробовать совместить если получится.
  6. Добрый день, вопрос глупый, но чисто для повышение эрудиции. QString text.sprintf("%s %i %s %s %i", " Width = ", xy3.x, "\r\n", " Height = ", xy3.y); char* textus = const_cast<char*>(text.toStdString().c_str()); putText( frame, textus, cvPoint(30,30), CV_FONT_HERSHEY_COMPLEX, 1, cvScalar(255,255,0),1); Если вывожу в консоль, то пишет две строки, а если командой putText, то вместо выполнения "\r\n" выводит вместо них два знака вопроса. ВОПРОС: это я что-то делаю не так, или это особенность Opencv.
  7. Два потока два окна

    Скажите, можно или нет открыть два окна namedWindow("frame1");namedWindow("frame2");в разных потоках? Один основной, другой вспомогательный: два окна, две камеры, две разные обработки, не связанных друг с другом. Если можно, то хоть какой-нибудь примерчик.
  8. Два потока два окна

    Про Viz давно прочитал и даже установил, но ещё не пробовал, не успел, а на формате сохранения всё-таки остановился на OBJ, который потом можно сконвертировать с помощью 3DМАХ в нужный, да и самый простой, и описание толковое есть. Всех С НОВЫМ 2015 ГОДОМ !
  9. Два потока два окна

    Я уже переписал прогу и вывожу все окна в главном потоке, не вопрос. Если бы захотел, то мог запустить вообще как два разных процесса, а управлять из третьего - подобное делал, но не для Opencv. Хотя и не врубился, чем главный GUI поток лучше любого другого. И вообще, эту тему закрыл, сейчас сижу и читаю литературку, как преобразовать точки с массива картинок в координаты 3х мерной модели, чтобы получить что-то типа меша, как в 3дмах, и преобразовать в какой-нибудь известный формат (3ds или хотя бы OBJ). Если где-то, кто - то что видел - дайте наколку.
  10. Два потока два окна

    да, пробую всякую фигню, эксперементирую с Opencv. Попалась статья здесь на форуме "определение указки", а у меня не указка с точкой, а уровень с полоской, вот и подумал, можно сделать сканер. После того, как я получу множество полосочек, как их перевести на координатную сеть. Просто пример или какое-нибудь описание, чтобы подумать - начинать новый проект или не стоит.
  11. Два потока два окна

    да, я просто попробовал - не получилось, вот и спросил - я дурак, что-то неправильно сделал или правда нельзя. Спасибо за быстрый ответ.
  12. Добрый день, появилось свободное время, и решил дописать свою программку, и сразу столкнулся с тем что, не могу передать Мат через сигнал/слот QObject::connect(this,SIGNAL(Frames(Mat&)), CamerasNew, SLOT(detectFase(Mat&)));//Находим рожу или QObject::connect(this,SIGNAL(Frames(Mat)), CamerasNew, SLOT(detectFase(Mat))); Всю субботу просидел, пытаясь применить qRegisterMetaType () . Но прогуглев кучу статей, так ничего не смог сделать, решил обратиться к гуру. Если не трудно, объясните, как правильно надо передавать матрицы и вектора из потока в поток. Спасибо.
  13. ошибка была в месте написания команды: Q_DECLARE_METATYPE(cv::Mat); после перенесения её до начала int main() { и строки qRegisterMetaType<Mat>("Mat"); перед QObject::connect(this,SIGNAL(Frames(Mat)), CamerasNew, SLOT(detectFase(Mat)));//Находим рожу ошибка исчезла, но неисчезли проблемы в detectFase, Мат приходит пустым. Я где-то читал, что вроде как получаю только копию, а чтобы передовать как есть, нужно сказать - хочу не копию. Должно получится что-то типа: emit Frames(ХХХ(frame)); а вот это ХХХ не могу вспомнить, хоть тресни. Или я что-то неправильно понимаю?
  14. Так и не смог победить - получаю ошибку, хоть тресни. QObject::connect: Cannot queue arguments of type 'Mat' (Make sure 'Mat' is registered using qRegisterMetaType().)
  15. Извините, что задаю много вопросов, но по ходу здесь самый авторитетный форум по Opencv. В своём проекте для панорамной камеры вся задача решалась легко, брал кадр, потом из него вычитал второй, полученный с задержкой, и смотрел построчно, что осталось. Рассчитывал средние арифметическое и посылал в порт. И так два раза в секунду. Пришлось поработать с Ардуинкой, чтобы не дергалась на шумы и поворачивалась в нужную точку, но это всё легко. А повис, когда захотел, чтобы вторая камера не только записывала то, что видит, а ещё и пыталась определить - попало или нет лицо в кадр. Взял готовый урок http://recog.ru/blog/opencv/62.html ,чуток переделал по своему пониманию, но не смог преодолеть несколько ошибок. Вот кусок, пока работает с фотками // Читаем изображения и присваиваем им номера (на каждого человека) vector<Mat> images; vector<int> labels; images.push_back(imread("1.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(1); images.push_back(imread("2.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(2); images.push_back(imread("3.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(3); Mat testSample( imread("4.jpg", CV_LOAD_IMAGE_GRAYSCALE)); int testLabel = 1; // get width and height int height = images[0].rows; // Строится Fisherfaces model для тренировки Ptr<FaceRecognizer> model = createFisherFaceRecognizer(); //тренируем модель model->train(images, labels); // Тестируем к какому изображению относится модель int predicted = model->predict(testSample); получаю ошибку при вызове model->train и int predicted. Пробовал переустановить" libopencv_contrib249d.dll.a" думал, может криво поставил (не помогло). Перечитал весь хелп, но вот пришел с поклоном ПОМОГИТЕ определить ошибку.
  16. Спасибо, я уже попробовал и увидел заметное ускорение, но со временем задержка все равно накапливается, и в конечном итоге задержка прежняя. В борланде я бы опрашивал каждую камеру не в цикле, а использовал бы класс TTimer, чтобы разнести по потокам. Чем лучше воспользоваться в Qt консольном приложении?
  17. Как вариант красиво смотрится, на целую проверку меньше операций. И ещё, есть какая - нибудь разница в скорости в двух блоках: 1. CvCapture* capture; Mat frame; capture = cvCaptureFromCAM( 0 ); {while( true ){ frame = cvQueryFrame( capture ); 2. VideoCapture capture0(0); namedWindow("Cam0"); Mat frame0; while(true) { capture0 >> frame0; в уроках встречаются оба варианта, а какой новее или быстрее - пока не разобрался.
  18. Проверка показала, что память грузится первых 10 мин., а потом стабилизируется. (с 560000 поднимается до 850000 приблизительно), а дескрипторы так и продолжают расти примерно 4 в сек.(прыгает туда - сюда, поэтому тоже приблизительно). А сколько по - нормальному должна занимать прога, я и приблизительно не знаю: сравнить не с чем. И ещё, почему после того, как я выхожу из цикла, там остаётся только Return 0; а окна, оба, не закрываются. if( capture ){while( true ){ // направляем поток в вектор frame = cvQueryFrame( capture ); if( (char)waitKey(1) == 'c' ) { cvReleaseCapture( &capture ); cvDestroyWindow(window_name); break; } } . . . return 0;
  19. Я где - то эту статью на буржуйском уже читал. Интересно перечитывать на нормальном русском, сколько я при переводе упустил, и больше половины было непонятно. Спасибо. А с памятью уже проверяю, задержка нарастёт - память сравню.
  20. Такое описание и искал. СПАСИБО. И ещё, я заметил, что чем дольше программа работает, тем больше отставание картинки во времени. Может, можно как - то сделать, чтобы не каждый кадр просчитывался, а тот, который на данный момент снимает камера. Предполагаю, что Capture надо как - то очищать.
  21. Попробовал разрешение камеры уменьшить, убрал все авто, ничего не помогло. На самом деле работать будет на компе побыстрей, но и камера 600х800, плюс ещё одна панорамная тоже 600х800. Потом попробую разделить на потоки,чтобы параллельно работали, но пока разбираюсь с алгоритмами.
  22. Почитал про свою вебку. Задержка - это норм. время обработки кодака. Есть где - нибудь вразумительное описание на русском? А то за эти два дня словарь изрядно поистрепался.
  23. Тут в начале программы есть переменная.RNG rng(400); объявлена, и не где не используется. Я так понимаю, какое-то случайное число, а зачем надо, не где найти не могу. CV_HAAR_FIND_BIGGEST_OBJECT несильно ускорило. Запустил домашнюю вебку в VCL-player она и там притормаживает видео с задержкой в пол секунды. Буду разбираться с дровиной.
  24. За два дня столько теорий начитался, что во всёй этой воде тону. Короче, всё это откинул, и для начала нашел действующий пример http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html#cascade-classifier . Там используется другой метод, //-- Detect faces face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); по крайней мере он работает. Вот теперь и буду пробовать теории, но уже на практике. Но по-моему, этот метод сильно медленный, или я ошибаюсь. (Мне не надо распознать лицо, мне надо зафиксировать: было или нет лицо в кадре.)
  25. Я читал, что Виолы детектор более современный, чем Хаара, но выбор пал в связи больших примеров и описаний. Трудно что-то изучать, если везде написаны только теории и мало примеров с описаловом.
×