Создание и открытие захвата видео с 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();
}
Как я могу сделать эту работу?