Искаженные кадры при работе с RTSP потоком от IP камеры на OpenCV Python

Я пытаюсь отслеживать объекты (Yolov5+DeepSort), обрабатывая данные, полученные с IP-камеры. Для получения видеоданных я использую OpenCV и протокол RTSP для подключения к камере.

Проблема в том, что часть полученных кадров сильно искажены, что автоматически делает невозможным корректное отслеживание объектов на видео. Если я получаю RTSP поток через VLC, то таких проблем нет.

В чем может быть проблема? Может ли это быть из-за слабого сигнала Wi-Fi от маршрутизатора или это связано с OpenCV. Или же может мне не стоит работать с live-видео, а обрабатывать видео из архива. В таком случае я не знаю, как получить доступ к архиву видеоматериалов на MicroSD-карте, расположенной внутри IP-камеры, без необходимости постоянно вытаскивать ее для скачивания архива.

OpenCV 4.6.0
Python 3.8

python3.8 -c "import cv2; print(cv2.getBuildInformation())"

Video I/O:
    DC1394:                      NO
    FFMPEG:                      YES
      avcodec:                   YES (58.134.100)
      avformat:                  YES (58.76.100)
      avutil:                    YES (56.70.100)
      swscale:                   YES (5.9.100)
      avresample:                NO
    GStreamer:                   NO
    v4l/v4l2:                    YES (linux/videodev2.h)

Код:

import cv2
from cv2 import (VideoCapture, namedWindow, imshow, waitKey, destroyWindow, imwrite)
import os
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;udp"

video = VideoCapture("rtsp://admin:[email protected]:554/onvif1")
k = 0
while True:
    k += 1
    ret, frame = video.read()    
    # cv2.imshow('frame',frame)
    cv2.imwrite('test'+str(k)+'.jpg', frame)            
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video.release()
cv2.destroyAllWindows()

Примеры нормальных и искаженных кадров: введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения


Ответы (0 шт):