slavchickalpha
@slavchickalpha

Почему Python OpenCV на Ubuntu не может получить изображение с IP-Камеры?

Здравствуйте. Имеется сервер на Ubuntu, на котором я решил запустить Python-Код, который будет захватывать картинку с потока IP-Камеры и распознавать движение. Но, как я понял, по какой-то причине он не может получить изображение, и это вызывает ошибку:
gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.4.0) /tmp/pip-install-5f2ta5by/opencv-python/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'


Прошу заметить, что этот же код отлично работает на Windows, и изображение с камеры захватывает.

Сам код:
import cv2 # импорт модуля cv2
import time
cap = cv2.VideoCapture("http://admin:password@192.168.1.54/video1.mjpg") # видео поток с камеры


ret, frame1 = cap.read()
ret, frame2 = cap.read()

last_motion_time = int(time.time())

while True: # метод isOpened() выводит статус видеопотока
 
  diff = cv2.absdiff(frame1, frame2) # нахождение разницы двух кадров, которая проявляется лишь при изменении одного из них, т.е. с этого момента наша программа реагирует на любое движение.
 
  gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY) # перевод кадров в черно-белую градацию
 
  blur = cv2.GaussianBlur(gray, (5, 5), 0) # фильтрация лишних контуров
 
  _, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY) # метод для выделения кромки объекта белым цветом
 
  dilated = cv2.dilate(thresh, None, iterations = 3) 
 
 
  сontours, _ = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) #
 
   
  for contour in сontours:
    (x, y, w, h) = cv2.boundingRect(contour) 
   
    if cv2.contourArea(contour) < 700: # условие при котором площадь выделенного объекта меньше 700 px
      continue
    print('Motion Detected!')

  frame1 = frame2  #
  ret, frame2 = cap.read() #  
 
 
 

cap.release()


Если в While вместо True подставить «cap.isOpened()», то цикл выполняться не будет, т.е. видео-поток не открывается.
Есть подозрения на какие-либо пакеты или кодеки. Подскажите, в чем может быть проблема?
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы