Если вам интересно , почему? , это может удовлетворить ваше любопытство .
Если вы работаете с файлами, которые могут заканчиваться или не заканчиваться новой строкой, вы можете сделать это:
while IFS= read -r line || [ -n "$line" ]; do
echo "$line"
done
Или это:
while IFS= read -r line; do
echo "$line"
done < <(grep "" file)
Подробнее:
Подача видео не прекращается (точнее, в моем случае: это пустое окно не гаснет) при нажатии клавиши «q» на клавиатуре, хотя для этого написан код
blockquote> [ 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.
blockquote>
- Хотя я написал код 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
После внесения этих изменений ваш код будет работать.