Я использую cv::VideoCapture OpenCV на C++ (или Python) для подключения к потоку камеры. Я хотел бы знать, использует ли OpenCV многопоточность или многопроцессорность при открытии и захвате кадров с камеры.
В частности, мне интересно:
Порождает ли OpenCV новые потоки или процессы при использовании cv::VideoCapture.
Если FFmpeg включен в качестве бэкэнда, использует ли он многопоточность или многопроцессорность под капотом?
Как я могу проверить поведение потоков или процесса во время потоковой передачи с камеры?
Что я пробовал:
Я проверил текущий процесс с помощью psutil (на Python) и распечатал количество темы:
Код: Выделить всё
import cv2
import psutil
cap = cv2.VideoCapture("rtsp://camera_stream", cv2.CAP_FFMPEG)
process = psutil.Process()
print(f"Process ID: {process.pid}, Name: {process.name()}")
print(f"Thread count: {process.num_threads()}")
for thread in process.threads():
print(f"Thread ID: {thread.id}, CPU Time: {thread.user_time + thread.system_time}")
cap.release()
Использует ли VideoCapture многопоточность или многопроцессорность?
Есть ли надежный способ проверить, поддерживает ли базовый сервер (например, FFmpeg) многопоточность?
Есть ли в OpenCV или FFmpeg специальные настройки, которые могут контролировать такое поведение?
Спасибо за помощь!
Подробнее здесь: https://stackoverflow.com/questions/792 ... sing-inter