Как открыть несколько VideoCapture одновременно с opencv? - PullRequest
0 голосов
/ 10 июля 2019

Создание и открытие захвата видео с IP-камеры занимает около 2 секунд.Я хочу открыть более 10 видеозахватов, и для лучшей производительности я хочу сделать эту работу, создавая видеозахваты в другом потоке.Но захват видео создается последовательно.

Я видел источник opencv и нашел этот код, когда opencv создает захват в backend_plugin.cpp файле.

void initBackend()
{
    AutoLock lock(getInitializationMutex());
    try {
        if (!initialized)
            loadPlugin();
    }

Isэтот код мешает моему коду быть параллельным?или у меня ошибка?

это мой пример кода, который используется для создания видеозахвата.

Я использовал std :: thread и std :: future, но результат был одинаковым.

vector<VideoCapture> captureList;
std::vector<std::thread> threads;

for (auto &it : urlList) {

  string url = it;

  threads.push_back(thread([](string url) {
      cout << "*********** : " << url << endl;
      VideoCapture& cap = VideoCapture(url);
      captureList.push_back(cap);

  }, it));
}

for (auto& thread : threads) {
  thread.join();
}

Как я могу сделать эту работу?

...