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

LexaP

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

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

  • Посещение

  • Days Won

    1

Сообщения, опубликованные пользователем LexaP


  1. 23 минуты назад, iskees сказал:

    У меня подозрение на Sleep(), попробуйте просто засунуть его в бесконечный цикл и посмотреть нагрузку. 

    Он и так в цикле, можно конечно поставить Sleep(500), но тогда получим два кадра в сек., что неправильно. Необходимо получать количество кадров равное количеству кадров в видеофайле.

    Идеально работает связка cv::imshow и cv::waitKey, но это не то....так как визуализации в фоновой программе нет.

    - Может есть информация, что такого есть в cv::imshow и cv::waitKey, чего нет в Sleep()?

    - Почему cv::imshow и cv::waitKey дает минимум нагрузки на проц, а Sleep() очень ресурсоёмкий?.. 

    PS

    Запускал по разному и в разных потоках.

    PSS

    Проверил Sleep() в цикле, дает 0% нагрузки.

     

     


  2. Коллеги, прошу подсказки. Мониторил форум, не нашел ответов...

    Задача.
    Считать покадрово видеофайлики с минимум нагрузкой на ЦП. Работа решения планируется на одноплатных ПК без визуализации, то есть в фоновом режиме.

    Если считывать кадр и добавить задержку таким способом, нагрузка на ЦП в пределах 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), с сохранением минимальной нагрузки на ЦП.

     

    Может есть другие подходы при считывание кадров, добавление задержки и минимальной загрузки ЦП?.

    Приоритет: Считать все кадры с минимум нагрузки на ЦП.


  3. Решил не плодить тем и спросить тут.

    Хочу прикупить еще один комп. для работы с cuda, какую лучше видеокарту выбрать

    nVidia GTX 750Ti 2Gb

    nVidia GTX 1050 Ti 4Gb

    или может посмотреть в сторону других моделей (бюджет не сильно раздутый)?

    Спасибо


  4. В 16.09.2017 at 13:20, Razangann сказал:

    Спасибо за краткое описание систем:)

    На счет GPU, еще не пробовал, думаю можно сделать пару тестов.

    По поводу ПК c i3, у меня сейчас такое реализовано, i3-4160(3.6ГГЦ) тащит 12 камер и тратит всего 6-8% цп. Идея была в разделении обработки каждой камеры отдельным модулем. К одному такому ПК можно подключить и 80 камер, но там уже будет проблема с кабелями, свичами и тд... В идеале думал микрокомпьютер на одну камеру, к нему wifi модуль, обрабатывать само видео на микропк и слать по сети уже готовые данные по wifi.

    Что на счет одноплатных от intel? Intel N2930 или какой-нибудь Atom? :)

     

    Вопрос.

    Вы используете IP камеры?

    Сам работаю с ними через RTSP, декодирую через FFMPEG, но при этом только на одну камеру нужно порядка 5% процессора уровня intel i5. Интересно как у Вас получилось с 12 камер...6-8% загрузки ЦП?

    PS. Многое еще от камер зависит, т.к были камеры которые на декодирование тратили 1%


  5. Пересобрал проект под обработку данных на графике_интел ( opencl )

    Все хорошо работает, но появилась странность

    При использование OclCascadeClassifier не всегда корректно обрабатываются файлы каскадов(xml). Имеется ввиду, что при использование одного и того-же каскад_файла результаты разные.

     - на CascadeClassifier под ЦПУ объекты находятся

     - на OclCascadeClassifier под ГПУ Интел, не находятся.

    С чем это может быть связано., разные алгоритмы обработки.?

     


  6. Добрый день.

    У меня дилетантский вопрос.

    Реально ли сделать обработку видео на видеокартах не поддерживающие CUDA, например на интегрированных Intel HD?

    Сейчас думаем собрать мини-девайс для обработки видео. Процессор с нагрузкой справляется, хочется только "распараллелить" потоки.

    PS

    Интересует замена в работе функций с CascadeClassifier, на CascadeClassifier_GPU

     

     


  7. Привет.

    Не нашел такой темы, решил не создавать отдельно, а спросить тут. Распознавание лиц, работает с фреймом (картинкой) с камеры. У меня возник вопрос.

    Вопрос

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

    или

    Как понять, что на фрейме...картинка, а не живой объект.?

    Мои мысли.

    1) Если это лист бумаги с фото, можно детектировать белый фон листа и исключать данный фрейм из обработки. Если конечно, это лист белый ))

    2) Детектировать изменение фона, в результате исключения мы получим разные фоновые картинки.

    3) Просто детектировать движение лица, при котором фон не подвижен. На картинке, фон и лицо одновременно не подвижны.

    Мне интересны просто идеи как исключать из распознавания "объекты на картинках"

    Спасибо.


  8. Решил перенести часть модулей под C#, на С++ оставил только ввод/вывод, работа с файлами и формулы по линейной алгебре. Запустил, все работает.

    Но все таки интересно, почему возникает ошибка?. Был ли у Вас опыт интеграции библиотек (OpenCV) в другие платформы, стоит ли "игра свеч" ?


  9. Это вроде как предупреждение должно быть, opencv_legacy249d.pdb - это отладочные символы для opencv_legacy, не особо полезные, если не собираетесь лезть в кишки OpenCV. И, судя по всему Вы работаете с отладочной конфигурацией. Так и задумано?

    Перевел проект в release.

    Тоже самое, только соответственно просит без d

    Подскажите пожалуйста, где возможно накосячил?

    Можно конечно проект с OpenCV(с++) переписать на EmguCV(C#), но боюсь не та производительность получится + время уйдет "вагон".


  10. Всем привет.

    Хочу узнать, что за ошибка или это не ошибка.?

    Есть модуль на OPENCV249, делаем сравнение фотографий. Сравнивает отлично и все работает.

    Но решил скомпилить DLL и вызывать модуль через C#, все запускается, но доходя до функции cvExtractSURF(.....)

    выскакивает ошибка - opencv_legacy249d.pdb not found

    Ошибка именно, когда вызываю модуль через DLL, когда запускаю сам исходник в Студии, все хорошо.

    PS

    VS 2013 Eng

    копировал pdb в папку с DLL тоже, не получается.

     


  11. Добрый день.

     

    Ищу "лист метала" на фоне. Решил, реализовать это через BackgroundSubtractorMOG (BackgroundSubtractorMOG2) и исключить эталонный фон.

    "Лист метала", нашли, получили такую картинку.

     

    e5f2216d25af.png

     

    Вопрос.

    Как удалить "шумы"?, а именно лишние точки и оставить только квадрат.

    или выделить квадрат с получением его координат.

     

    Спасибо.


  12. Добрый день.

     

    Есть такая задумка.

    Имеем (например) лист бумаги на столе, фото сверху.

    1323016506_kak-sdelat-iz-bumagi-samoleti

     

    Нужно определить;

    1) размеры листа, ширина и высота

    2) угол наклона границ листа, относительно базовой точки. Точка будет условной и свою позицию не меняет.

     

    Камера которая фотографирует лист, не изменяет положение и её фокус находится на постоянном расстояние от стола.

    Очень важна точность измерения, погрешность не более 1 мм.

     

    Подскажите пожалуйста с чего начат ?

    Спасибо.

     

×