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

LexaP

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

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

  • Посещение

  • Days Won

    1

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

  1. Коллеги, прошу подсказки. Мониторил форум, не нашел ответов...Задача.Считать покадрово видеофайлики с минимум нагрузкой на ЦП. Работа решения планируется на одноплатных ПК без визуализации, то есть в фоновом режиме.Если считывать кадр и добавить задержку таким способом, нагрузка на ЦП в пределах 0.5% cv::imshow("ing", img); cv::waitKey(1000/fps); Если считывать кадр и добавить задержку так, нагрузка на ЦП в пределах 5.5% Sleep(1000/fps); Пробовал кучу вариантов. - Анализ в разных потоках, причем пробовал даже делегировать потоки относительно основного процесса. - Делал считывание кадров через FFmpeg, типа. ... avcodec_decode_video2(codec_context, frame, &frame_finished, &packet); if (frame_finished) { struct SwsContext * img_convert_ctx; img_convert_ctx = sws_getCachedContext(NULL, codec_context->width, codec_context->height, codec_context->pix_fmt, codec_context->width, codec_context->height, AV_PIX_FMT_BGR24, SWS_BICUBIC, NULL, NULL, NULL); sws_scale(img_convert_ctx, ((AVPicture*)frame)->data, ((AVPicture*)frame)->linesize, 0, codec_context->height, ((AVPicture *)pFrameRGB)->data, ((AVPicture *)pFrameRGB)->linesize); cv::Mat img(frame->height, frame->width, CV_8UC3, pFrameRGB->data[0]); //dst->data[0]); av_free_packet(&packet); sws_freeContext(img_convert_ctx); Sleep(40); или cv::imshow("img", img); cv::waitKey(40); } ... - Считывал кадры тоже по разному. Mat frame; cap >> frame; и так. cap.grab(); if (!cap.retrieve(frame) || frame.empty()) {continue;} В общем хоть убей, но при добавление инструкции cv::imshow("img", img); cv::waitKey(40); Загрузка ЦП оптимальна, но это не то, что нужно в плане реализации., так как планируется работа без визуализации. То есть в конечном итоге желательно установить задержку в Sleep(ms), с сохранением минимальной нагрузки на ЦП. Может есть другие подходы при считывание кадров, добавление задержки и минимальной загрузки ЦП?. Приоритет: Считать все кадры с минимум нагрузки на ЦП.
  2. Тоже самое. Может cv::waitKey() как то блокирует события в основном потоке и система ждет освобождения ресурсов на уровне получения кадра?. Может еще flush делает какой-то ))
  3. windows под intel i7, сборка в студии linux под ARM, сборка через cmake ( cmake -DCMAKE_BUILD_TYPE=Release) сборка и там и там, только в release.
  4. Две камеры используйте(стерео), будет проще. Хотя-бы исключите блики и перепады освещения.
  5. Он и так в цикле, можно конечно поставить Sleep(500), но тогда получим два кадра в сек., что неправильно. Необходимо получать количество кадров равное количеству кадров в видеофайле. Идеально работает связка cv::imshow и cv::waitKey, но это не то....так как визуализации в фоновой программе нет. - Может есть информация, что такого есть в cv::imshow и cv::waitKey, чего нет в Sleep()? - Почему cv::imshow и cv::waitKey дает минимум нагрузки на проц, а Sleep() очень ресурсоёмкий?.. PS Запускал по разному и в разных потоках. PSS Проверил Sleep() в цикле, дает 0% нагрузки.
  6. Решил не плодить тем и спросить тут. Хочу прикупить еще один комп. для работы с cuda, какую лучше видеокарту выбрать nVidia GTX 750Ti 2Gb nVidia GTX 1050 Ti 4Gb или может посмотреть в сторону других моделей (бюджет не сильно раздутый)? Спасибо
  7. Вопрос. Вы используете IP камеры? Сам работаю с ними через RTSP, декодирую через FFMPEG, но при этом только на одну камеру нужно порядка 5% процессора уровня intel i5. Интересно как у Вас получилось с 12 камер...6-8% загрузки ЦП? PS. Многое еще от камер зависит, т.к были камеры которые на декодирование тратили 1%
  8. OpenCV + не_Cuda

    Добрый день. У меня дилетантский вопрос. Реально ли сделать обработку видео на видеокартах не поддерживающие CUDA, например на интегрированных Intel HD? Сейчас думаем собрать мини-девайс для обработки видео. Процессор с нагрузкой справляется, хочется только "распараллелить" потоки. PS Интересует замена в работе функций с CascadeClassifier, на CascadeClassifier_GPU
  9. OpenCV + не_Cuda

    Благодарю за наводку. Буду думать. Спасибо.
  10. OpenCV + не_Cuda

    Пересобрал проект под обработку данных на графике_интел ( opencl ) Все хорошо работает, но появилась странность При использование OclCascadeClassifier не всегда корректно обрабатываются файлы каскадов(xml). Имеется ввиду, что при использование одного и того-же каскад_файла результаты разные. - на CascadeClassifier под ЦПУ объекты находятся - на OclCascadeClassifier под ГПУ Интел, не находятся. С чем это может быть связано., разные алгоритмы обработки.?
  11. Привет. Не нашел такой темы, решил не создавать отдельно, а спросить тут. Распознавание лиц, работает с фреймом (картинкой) с камеры. У меня возник вопрос. Вопрос Как исключить из алгоритма распознавания неживые лица или лица на картинках?. Когда распознаваемый объект подставлял картинку своего лица к камере, то в этом случае программа пропускает данный фрейм и переходит к следующему. или Как понять, что на фрейме...картинка, а не живой объект.? Мои мысли. 1) Если это лист бумаги с фото, можно детектировать белый фон листа и исключать данный фрейм из обработки. Если конечно, это лист белый )) 2) Детектировать изменение фона, в результате исключения мы получим разные фоновые картинки. 3) Просто детектировать движение лица, при котором фон не подвижен. На картинке, фон и лицо одновременно не подвижны. Мне интересны просто идеи как исключать из распознавания "объекты на картинках" Спасибо.
  12. Решил перенести часть модулей под C#, на С++ оставил только ввод/вывод, работа с файлами и формулы по линейной алгебре. Запустил, все работает. Но все таки интересно, почему возникает ошибка?. Был ли у Вас опыт интеграции библиотек (OpenCV) в другие платформы, стоит ли "игра свеч" ?
  13. Перевел проект в release. Тоже самое, только соответственно просит без d Подскажите пожалуйста, где возможно накосячил? Можно конечно проект с OpenCV(с++) переписать на EmguCV(C#), но боюсь не та производительность получится + время уйдет "вагон".
  14. Всем привет. Хочу узнать, что за ошибка или это не ошибка.? Есть модуль на OPENCV249, делаем сравнение фотографий. Сравнивает отлично и все работает. Но решил скомпилить DLL и вызывать модуль через C#, все запускается, но доходя до функции cvExtractSURF(.....) выскакивает ошибка - opencv_legacy249d.pdb not found Ошибка именно, когда вызываю модуль через DLL, когда запускаю сам исходник в Студии, все хорошо. PS VS 2013 Eng копировал pdb в папку с DLL тоже, не получается.
  15. Размеры и угол наклона.

    Добрый день. Есть такая задумка. Имеем (например) лист бумаги на столе, фото сверху. Нужно определить; 1) размеры листа, ширина и высота 2) угол наклона границ листа, относительно базовой точки. Точка будет условной и свою позицию не меняет. Камера которая фотографирует лист, не изменяет положение и её фокус находится на постоянном расстояние от стола. Очень важна точность измерения, погрешность не более 1 мм. Подскажите пожалуйста с чего начат ? Спасибо.
  16. Размеры и угол наклона.

    ....... точно, извините, поторопился с постом.
  17. Размеры и угол наклона.

    Добрый день. Ищу "лист метала" на фоне. Решил, реализовать это через BackgroundSubtractorMOG (BackgroundSubtractorMOG2) и исключить эталонный фон. "Лист метала", нашли, получили такую картинку. Вопрос. Как удалить "шумы"?, а именно лишние точки и оставить только квадрат. или выделить квадрат с получением его координат. Спасибо.
  18. Размеры и угол наклона.

    Этого достаточно. Спасибо. Как будет результат, отпишусь.
×