У меня есть вопрос о потоке в python.
У меня есть 3 приложения, для которых я хочу получить доступ к одному и тому же ресурсу (камере). Я хотел бы запустить камеру для потоковой передачи кадров, а затем каждый из этих процессов принимает кадры по мере необходимости и с разным разрешением (или я могу масштабировать изображения позже, если это неэффективно). Я могу заставить каждое из этих трех приложений работать независимо, но не нашел способа успешно их обработать. Все три были изучены от других, и я благодарен за их совместное использование. Кредиты ниже.
Приложение 1 передает поток видео на веб-сервер.
with picamera.PiCamera(resolution='640x480', framerate=16) as camera:
output = StreamingOutput()
camera.start_recording(output, format='mjpeg')
try:
address = ('', 8000)
server = StreamingServer(address, StreamingHandler)
server.serve_forever()
finally:
camera.stop_recording()
Приложение 2 часто захватывает в память небольшие кадры для обнаружения движения, а затем, если выполняются определенные условия, изображение отображается сохранено на диск. В этом случае я хочу получить кадры с низким разрешением для ускорения анализа и сохранения их только в памяти. Что касается сохранения, меня интересует захват файла с более высоким разрешением для диска
def captureTestImage(settings, width, height):
command = "raspistill %s -w %s -h %s -t 200 -e bmp -n -o -" % (settings, width, height)
imageData = io.BytesIO()
imageData.write(subprocess.check_output(command, shell=True))
imageData.seek(0)
im = Image.open(imageData)
buffer = im.load()
imageData.close()
return im, buffer
while True:
motionState = P3picam.motion()
if motionState:
with picamera.PiCamera() as camera:
camera.resolution = (1920,1080)
camera.capture(picPath + picName)
Приложение 3 захватывает кадры из видеопотока, а затем использует openCV для них.
vs = VideoStream(src=0).start()
time.sleep(2.0)
while True:
frame = vs.read()
frame = imutils.resize(frame, width=500)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
Приложение 1 кредит: http://picamera.readthedocs.io/en/latest/recipes2.html#web потоковое Приложение 2 кредита: http://pastebin.com/raw.php?i=yH7JHz9w Приложение 3 кредита: https://www.pyimagesearch.com/2018/06/25/raspberry-pi-face-recognition/