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

Доска почета


Popular Content

Showing most liked content since 22.01.2019 в Сообщения

  1. 1 point
    Здравствуйте. Столкнулся с проблемой получения кадра с веб камеры и видео. Как оказалось opencv использует программное декодирование видео потока. В результате чего не могу получить 60fps и убрать нагрузку с процессора. Через проигрыватель, который идет с K-Lite Codec Pack все воспроизводится так как надо. Кто нибудь решал такую проблему или может есть другой способ получать кадры с видео?
  2. 1 point
    Получать можно в том же ffmpeg: 1. Если не собран, то собрать ffmpeg с поддержкой cuvid. Проверка: ./ffmpeg -hwaccels 2. При создании AVCodec вызвать avcodec_find_decoder_by_name("h264_cuvid") или avcodec_find_decoder_by_name("mjpeg_cuvid"). 3. Перед вызовом avcodec_decode_video2 устанавливать decCtx->pix_fmt = AV_PIX_FMT_CUDA 4. Тут уже нам возвращают указатель на видеопамять в AVFrame, можно копировать её к себе и обрабатывать: 4.1. Учитываем, что в данном случае у нас кадр не YUV420, а NV12: cudaMemcpy(data, picture->data[0], height * picture->linesize[0], cudaMemcpyDefault) 4.2. Хочется RGB? Вызываем nppiNV12ToBGR_709HDTV_8u_P2C3R 4.3. Хочется засунуть в OpenCV? Вот: cv::cuda::GpuMat* gpuFrame = new cv::cuda::GpuMat(height, width, CV_8UC1, picture->data[0], picture->linesize[0]) Выгрузить из GPU memory и сохранить? Вот: cv::Mat frame; gpuFrame->download(frame); 4.4. Хочется отобразить кадр без копирования в ОЗУ? Создаём OpenGL окно: cv::namedWindow("wnd name", cv::WINDOW_OPENGL) Это про декодирование на CUDA и обработку кадра средствами OpenCV без копирования в системную память. Про TensorFlow: тут надо использовать С++ API, на Питончике такой возможности нет. Добавили такую возможность недавно в версии 1.12: вот обсуждение.
  3. 1 point
    Для аппаратного декодирования h.264/h.265/mpeg4/MJPEG можно взять библиотеки из проекта ffmpeg. Там есть реализаций кодеков с использованием SDK от NVIDIA, AMD и INTEL, также есть варианты для мобильных устройств. В ffmpeg есть свой модуль для работы с камерами. OpenCV версий 3 и 4 можно собрать с поддержкой ffmpeg для декодирования. Применяя аппаратный декодер и OpenCV модули с поддержкой NVIDIA Cuda и/или OpenCL, есть возможность построить алгоритмы без копирования декодированного потока в хост память. DirectX и OpenGL поверхности в памяти GPU могут являться источником для OpenCl/Cuda матриц в OpenCV не покидая GPU.
  4. 1 point
    Это для всех сетей. Мы для кастомной LSTM так делали - заработало.
×