Подача видео не прекращается (точнее, в моем случае: это пустое окно не гаснет) при нажатии клавиши «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
После внесения этих изменений ваш код будет работать.
Yes it is :) http://erlang.org/doc/man/escript.html
$ cat /tmp/test
#!/usr/bin/env escript
main(_) ->
io:format("Hello World!\n").
$ chmod +x /tmp/test
$ /tmp/test
Hello World!
Создать модуль, запускающий процесс автоматической загрузки изменений кода в вашу оболочку, должно быть довольно просто. В Erlang есть встроенная поддержка такого рода вещей. Таким образом, каждый раз, когда вы перекомпилируете код, он автоматически загружается в вашу оболочку, что избавляет от необходимости набирать c ('module.erl'). сами. Возможно, вы даже можете заставить его отслеживать изменения файлов и автоматически компилировать их для вас. см.
http://github.com/toddlipcon/mochiweb/blob/29d6ffd58aa2cd175f84cadfc1ce1697f366ef62/src/reloader.erl
для примера в действии.
В настоящее время этот модуль просто ищет перекомпилированные модули, но было бы тривиально заставить его искать измененные исходные файлы и перекомпилировать их для вас.