У меня трудности с обработкой изображений с IP-камеры на моем RPI 4 (даже на моем Mac) с OpenCV и Python. Мой проект состоит в том, чтобы получить изображения IP-камеры (RGB - 1920 x 1080) и обработать их с помощью алгоритма обнаружения объекта. У меня нет никаких ограничений в реальном времени. Если бы я мог запускать алгоритм примерно каждые 5 минут, он был бы идеальным.
Версия OpenCV: 4.1.1 Версия Python: 3.6.5
Прежде всего, я протестировал алгоритм сБанк изображений, который я ранее записал (с той же камеры). Это прекрасно сработало.
Тем не менее, когда я попытался использовать видеопоток, я получил ошибку о перечитании. Я думаю, у меня должна быть проблема с тем, как я управляю потоком изображений.
import cv2, time
cap = cv2.VideoCapture(‘URL’)
if (cap.isOpened()== False):
print("Error opening video stream or file")
sampleTime = 10 # in seconds
imgCounter = 0
startTime = time.time()
while True:
ret, frameCaptured = cap.read()
if time.time() - startTime >= sampleTime and ret == True:
startTime = time.time()
# Do some stuff here
time.sleep(5)
cv2.imshow('Captured Image', frameCaptured)
imgCounter += 1
print("Image:",imgCounter)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Даже если первое изображение нормально записывается, я систематически получаю сообщение об ошибке: Изображение: 1 [mjpeg @ 0x7ff6ac808000] overread8
Тогда переменная ret становится False. Обратите внимание, что без условия «ret == True» я вижу зеленую область, появляющуюся на втором изображении, и затем выполнение останавливается.