OpenCV: код для повторного подключения отключенной камеры работает нормально, но во внешнем кадре захваченного видео не загружается

Если вам интересно , почему? , это может удовлетворить ваше любопытство .

Если вы работаете с файлами, которые могут заканчиваться или не заканчиваться новой строкой, вы можете сделать это:

while IFS= read -r line || [ -n "$line" ]; do
  echo "$line"
done 

Или это:

while IFS= read -r line; do
  echo "$line"
done < <(grep "" file)

Подробнее:

  1. https://stackoverflow.com/a/31397497/3744681
  2. https: / /stackoverflow.com/a/31398490/3744681

0
задан Summa 21 February 2019 в 07:01
поделиться

1 ответ

Подача видео не прекращается (точнее, в моем случае: это пустое окно не гаснет) при нажатии клавиши «q» на клавиатуре, хотя для этого написан код

[ 110]

В функции work_with_captured_video() вы возвращаете статус True до cv2.waitKey(1). По сути, это должно быть что-то вроде этого,

def work_with_captured_video():
    while True:
        ret, frame = camera.read()
        if not ret:
            print("Camera is disconnected!")
            camera.release()
            return False
            #break --> Not required.
        else:
            cv2.imshow('frame', frame)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
     return True

Как только вы закончите с циклом while, вы вернете статус True.

  1. Хотя я написал код cv2.imshow для просмотра видеопотока, я не смог увидеть ни одного видеопотока.
while True:
    camera = cv2.VideoCapture('rtsp://<ip specific to my camera>')
    if camera.isOpened():
        print('Camera is connected')
        #call function
        response = work_with_captured_video()
        if response == False:
            time.sleep(10)
            continue
    else:
        print('Camera not connected')
        camera.release()
        time.sleep(10)
        continue

Пожалуйста, передайте функции work_with_captured_video() аргумент camera. Функция не передается никаким аргументом, поэтому строка if not ret: имеет переменную ret как False.

def work_with_captured_video(camera):
    while True:
        ret, frame = camera.read()
        if not ret:
            print("Camera is disconnected!")
            camera.release()
            return False
        else:
            cv2.imshow('frame', frame)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    return True

while True:
    camera = cv2.VideoCapture('rtsp://<ip specific to my camera>')
    if camera.isOpened():
        print('Camera is connected')
        #call function
        response = work_with_captured_video(camera)
        if response == False:
            time.sleep(10)
            continue
    else:
        print('Camera not connected')
        camera.release()
        time.sleep(10)
        continue

После внесения этих изменений ваш код будет работать.

0
ответ дан TheLazy 21 February 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: