OpenCV VideoCapture выдает серый экран, когда я читаю 3 или более потоков rtsp одновременноPython

Программы на Python
Anonymous
OpenCV VideoCapture выдает серый экран, когда я читаю 3 или более потоков rtsp одновременно

Сообщение Anonymous »

Я читаю потоки rtsp в нашей локальной сети. Когда это один или два потока, все работает гладко, но когда я пробую более двух потоков, у меня появляется серый экран, на котором видно несколько пикселей.
cap = cv2.VideoCapture(rtsp_uri)
cap.set(cv2.CAP_PROP_BUFFERSIZE, 2)

fps = cap.get(cv2.CAP_PROP_FPS)
delay_after_each_frame = 1/fps
print(delay_after_each_frame)

while True:
try:
ret, frame = cap.read()
except:
pass

if self.stopper[camera_id]:
del self.stopper[camera_id]
return

if not ret:
continue

frame = cv2.cvtColor(src=frame, code=cv2.COLOR_BGR2RGB)
frame = cv2.resize(
frame,
(self.config.frame_width, self.config.frame_height)
)
queue.enqueue(frame)
time.sleep(delay_after_each_frame)

здесь я использовал очередь для хранения кадров, и этот скрипт выполняется в потоке.
Есть ли способ чтения потоков с нескольких камер одновременно без этих серых рамок.
Вот такой кадр я получаю.
[img]https://i. stack.imgur.com/vyaLS.png[/img]

код для нескольких потоков и вывода.
for camera_id in self.config.get_camera_ids():
if camera_id not in self.threads:
self.threads[camera_id] = Thread(
target=self.process_rtsp_stream,
args=(self.config.get_rtsp(camera_id),
self.queues[camera_id], camera_id)
)
self.threads[camera_id].daemon = True
self.threads[camera_id].start()

# remove thread for deleted cameras
for camera_id in self.threads:
if camera_id not in self.config.get_camera_ids():
del self.threads[camera_id]


Подробнее здесь: https://stackoverflow.com/questions/767 ... -more-rtsp

Вернуться в «Python»