Raspberry Pi 3 Python y OpenCV Face Recognition de Network Camera Stream

Estoy tratando de transmitir video a través de una red WiFi usando un raspberry pi modelo 3 y el módulo de la cámara, pero he encontrado algunas inconsistencias de otros ejemplos que he encontrado en línea. Estoy intentando lograr los resultados de la tercera prueba realizada en este video: https://www.youtube.com/watch?v=sYGdge3T30o

Puedo ver los datos que se transmiten a través de la red y en el archivo fifo264 que se crea, también tengo un script de Python que funciona durante unos minutos antes de que ya no se pueda procesar la fifo264 video.

El video que se muestra en la máquina OS X eventualmente se bloquea. No estoy seguro si mi problema existe en la forma en que estoy generando y enviando el video (desde el lado de la Raspberry Pi) o en cómo lo estoy consumiendo con python y procesándolo.

Estoy intentando determinar las diferencias de plataforma que pueden estar contribuyendo a mis problemas, esta pregunta se centra en los mkfifo y netcat y las posibles diferencias entre cómo se comportan estos progtwigs en las plataformas.

Este script bash se está utilizando en OS X 10.12.6. Estoy intentando escuchar en el puerto 777 la fuente que se está creando y enviando a esta máquina.

     #!/bin/bash if [ -p fifo264 ] then rm fifo264 fi mkfifo fifo264 nc -l -v 777 > fifo264 

    Cuando se ejecuta el script anterior fifo264 se crea el conducto fifo264 en el directorio de trabajo y se heredan los permisos de usuario del usuario.

    sudo ./makeFifo.sh da sudo ./makeFifo.sh resultado ls -l as

    prw-r--r-- 1 root staff 0 Feb 4 12:12 fifo264

    Y

    ./makeFifo.sh da ./makeFifo.sh resultado ls -l as

    prw-r--r-- 1 user staff 0 Feb 4 12:12 fifo264

    También modifiqué el script de bash para proporcionar a -m 0777 resultado de mkfifo -m 0777 fifo264 . La tubería se crea con los permisos adecuados, pero netcat no logra establecer un 777/tcp open multiling-http . Estoy ejecutando nmap -sS -O localhost para probar. Los resultados son los mismos si uso la dirección IP de la máquina.

    Si no uso el script bash para crear una canalización y ejecutar netcat para escuchar en el puerto 777 desde la línea de comandos, puedo hacer que netcat cree un puerto 777 abierto en OS X 10.12.6 ingresando sudo nc -l -v 777 > fifo264 .

    Esto da como resultado la creación de un 777/tcp open multiling-http pero no crea una canalización. ls -l salidas:

    -rw-r--r-- 1 user staff 0 Feb 4 12:26 fifo264 note la p falta en la cadena de permisos.

    Si creo la tubería con mkfifo fifo264 desde la línea de comando, luego proceda a ejecutar sudo nc -l -v 777 > fifo264 , se crea la tubería pero netcat no escuchará en el puerto 777.

    ¿El envío de datos a un archivo sin canalización crearía algún problema de latencia? ¿Esto tendría un impacto en el siguiente script de python que estoy usando para mostrar el feed? Estoy usando openCV 3.4, con Python 3.6.4 en OS X (la máquina en la que estoy tratando de procesar la alimentación de video). videoFeed.py está abajo:

     import cv2 import subprocess as sp import numpy FFMPEG_BIN = "ffmpeg" command = [ FFMPEG_BIN, '-i', 'fifo264', # fifo is the named pipe '-pix_fmt', 'bgr24', # opencv requires bgr24 pixel format. '-vcodec', 'rawvideo', '-an','-sn', # we want to disable audio processing (there is no audio) '-f', 'image2pipe', '-'] pipe = sp.Popen(command, stdout = sp.PIPE, bufsize=10**8) while True: # Capture frame-by-frame raw_image = pipe.stdout.read(640*480*3) # transform the byte read into a numpy array image = numpy.fromstring(raw_image, dtype='uint8') image = image.reshape((480,640,3)) # Notice how height is specified first and then width if image is not None: cv2.imshow('Video', image) if cv2.waitKey(1) & 0xFF == ord('q'): break pipe.stdout.flush() cv2.destroyAllWindows() 

    Desde RaspberryPi Model 3 B ejecutando RASPBIAN STRETCH WITH DESKTOP (noviembre de 2017) Estoy usando el siguiente script de bash para transmitir el video streamVideo.sh .

     #!/bin/bash raspivid -vf -n -w 640 -h 480 -o - -t 0 -b 1200000 | nc -v 10.0.0.3 777 

    Para poner todo esto junto con lo que he podido trabajar hasta ahora es lo siguiente:

    En la máquina OS X, sudo nc -l -v 777 > fifo264 desde el terminal, lo que resulta en el siguiente escaneo de nmap:

     Host is up (0.00015s latency). Not shown: 993 closed ports PORT STATE SERVICE 80/tcp open http 445/tcp open microsoft-ds 548/tcp open afp 777/tcp open multiling-http 

    Luego, desde RaspberryPi, comienzo streamVideo.sh : la Connection to 10.0.0.3 777 port [tcp/moira-update] succeeded!

    En la máquina OS X, comienzo mi script en Python para acceder al feed de fifo264.

    python3 videoFeed.py

    Si la cámara se enfoca en un objeto fifo264 sin ningún movimiento en el marco, se transmitirá a la alimentación de fifo264 . Si comienzo videoFeed.py después de que hayan transcurrido unos segundos, la secuencia de comandos de python mostrará la videoFeed.py video desde el principio con un retraso significativo, aunque la calidad es correcta.

    Si inicio videoFeed.py inmediatamente después de ejecutar el script streamVideo.sh desde RaspberryPI, la latencia no existe, pero la calidad de la imagen es horrible. Tomé esta captura de pantalla moviendo mi mano frente a la cámara.

    introduzca la descripción de la imagen aquí

    A continuación encontrará la salida completa de la videoFeed.py comandos de python de videoFeed.py que está intentando consumir la fuente de video.

     ffmpeg version N-78264-g9079e99-tessus Copyright (c) 2000-2016 the FFmpeg developers built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn) configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb libavutil 55. 15.100 / 55. 15.100 libavcodec 57. 22.102 / 57. 22.102 libavformat 57. 23.100 / 57. 23.100 libavdevice 57. 0.100 / 57. 0.100 libavfilter 6. 27.100 / 6. 27.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, h264, from 'fifo264': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 640x480, 25 fps, 25 tbr, 1200k tbn, 50 tbc Output #0, image2pipe, to 'pipe:': Metadata: encoder : Lavf57.23.100 Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 640x480, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc57.22.102 rawvideo Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native)) Press [q] to stop, [?] for help [h264 @ 0x7f813c831800] error while decoding MB 6 6, bytestream -5 [h264 @ 0x7f813c831800] concealing 1003 DC, 1003 AC, 1003 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 30 20, bytestream -2884320.0kbits/s speed=1.43x [h264 @ 0x7f813c873200] concealing 419 DC, 419 AC, 419 MV errors in P frame [NULL @ 0x7f813c808000] missing picture in access unit with size 919 [h264 @ 0x7f813c866000] no frame! [h264 @ 0x7f813c824600] error while decoding MB 7 15, bytestream -7 [h264 @ 0x7f813c824600] concealing 642 DC, 642 AC, 642 MV errors in P frame Error while decoding stream #0:0: Invalid data found when processing input.0kbits/s dup=2 drop=0 speed=1.42x [h264 @ 0x7f813c858e00] error while decoding MB 39 17, bytestream -6 [h264 @ 0x7f813c858e00] concealing 530 DC, 530 AC, 530 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 17 28, bytestream -6 [h264 @ 0x7f813c821600] concealing 112 DC, 112 AC, 112 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 31 21, bytestream -5 [h264 @ 0x7f813c880400] concealing 378 DC, 378 AC, 378 MV errors in P frame [h264 @ 0x7f813c83ea00] error while decoding MB 38 18, bytestream -5 [h264 @ 0x7f813c83ea00] concealing 491 DC, 491 AC, 491 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 20 24, bytestream -5184320.0kbits/s dup=7 drop=0 speed=1.43x [h264 @ 0x7f813c880400] concealing 269 DC, 269 AC, 269 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 29 27, bytestream -6 [h264 @ 0x7f813c84bc00] concealing 140 DC, 140 AC, 140 MV errors in P frame [h264 @ 0x7f813c83ea00] error while decoding MB 36 0, bytestream -10 [h264 @ 0x7f813c83ea00] concealing 1200 DC, 1200 AC, 1200 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 15 7, bytestream -9=184320.0kbits/s dup=9 drop=0 speed=1.42x [h264 @ 0x7f813c873200] concealing 954 DC, 954 AC, 954 MV errors in P frame [h264 @ 0x7f813c824600] error while decoding MB 39 0, bytestream -25 [h264 @ 0x7f813c824600] concealing 1200 DC, 1200 AC, 1200 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 34 24, bytestream -6 [h264 @ 0x7f813c84bc00] concealing 255 DC, 255 AC, 255 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 32 21, bytestream -6184320.0kbits/s dup=15 drop=0 speed=1.44x [h264 @ 0x7f813c821600] concealing 377 DC, 377 AC, 377 MV errors in P frame [h264 @ 0x7f813c858e00] error while decoding MB 28 22, bytestream -6 [h264 @ 0x7f813c858e00] concealing 341 DC, 341 AC, 341 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 4 29, bytestream -8 [h264 @ 0x7f813c880400] concealing 85 DC, 85 AC, 85 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 7 18, bytestream -6=184320.0kbits/s dup=17 drop=0 speed=1.44x [h264 @ 0x7f813c873200] concealing 522 DC, 522 AC, 522 MV errors in P frame [h264 @ 0x7f813c866000] error while decoding MB 31 24, bytestream -10 [h264 @ 0x7f813c866000] concealing 258 DC, 258 AC, 258 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 23 28, bytestream -30 [h264 @ 0x7f813c84bc00] concealing 106 DC, 106 AC, 106 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 15 29, bytestream -9184320.0kbits/s dup=21 drop=0 speed=1.44x [h264 @ 0x7f813c880400] concealing 74 DC, 74 AC, 74 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 26 26, bytestream -5 [h264 @ 0x7f813c84bc00] concealing 183 DC, 183 AC, 183 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 37 14, bytestream -5 [h264 @ 0x7f813c880400] concealing 652 DC, 652 AC, 652 MV errors in P frame [h264 @ 0x7f813c831800] error while decoding MB 36 24, bytestream -6 [h264 @ 0x7f813c831800] concealing 253 DC, 253 AC, 253 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 25 26, bytestream -5184320.0kbits/s dup=23 drop=0 speed=1.44x [h264 @ 0x7f813c880400] concealing 184 DC, 184 AC, 184 MV errors in P frame [h264 @ 0x7f813c824600] error while decoding MB 37 2, bytestream -6 [h264 @ 0x7f813c824600] concealing 1132 DC, 1132 AC, 1132 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 33 23, bytestream -7 [h264 @ 0x7f813c84bc00] concealing 296 DC, 296 AC, 296 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 32 16, bytestream -5184320.0kbits/s dup=26 drop=0 speed=1.44x [h264 @ 0x7f813c821600] concealing 577 DC, 577 AC, 577 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 1 26, bytestream -6 [h264 @ 0x7f813c880400] concealing 208 DC, 208 AC, 208 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 32 12, bytestream -6184320.0kbits/s dup=28 drop=0 speed=1.43x [h264 @ 0x7f813c84bc00] concealing 737 DC, 737 AC, 737 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 27 26, bytestream -8 [h264 @ 0x7f813c880400] concealing 182 DC, 182 AC, 182 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 27 27, bytestream -5 [h264 @ 0x7f813c84bc00] concealing 142 DC, 142 AC, 142 MV errors in P frame [h264 @ 0x7f813c831800] error while decoding MB 23 20, bytestream -7 [h264 @ 0x7f813c831800] concealing 426 DC, 426 AC, 426 MV errors in P frame [h264 @ 0x7f813c858e00] error while decoding MB 29 26, bytestream -5184320.0kbits/s dup=31 drop=0 speed=1.43x [h264 @ 0x7f813c858e00] concealing 180 DC, 180 AC, 180 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 26 26, bytestream -5 [h264 @ 0x7f813c821600] concealing 183 DC, 183 AC, 183 MV errors in P frame [h264 @ 0x7f813c858e00] error while decoding MB 27 27, bytestream -9 [h264 @ 0x7f813c858e00] concealing 142 DC, 142 AC, 142 MV errors in P frame [h264 @ 0x7f813c824600] error while decoding MB 30 4, bytestream -8 [h264 @ 0x7f813c824600] concealing 1059 DC, 1059 AC, 1059 MV errors in P frame [h264 @ 0x7f813c858e00] error while decoding MB 9 22, bytestream -5=184320.0kbits/s dup=33 drop=0 speed=1.42x [h264 @ 0x7f813c858e00] concealing 360 DC, 360 AC, 360 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 25 13, bytestream -12 [h264 @ 0x7f813c873200] concealing 704 DC, 704 AC, 704 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 14 1, bytestream -9 [h264 @ 0x7f813c880400] concealing 1195 DC, 1195 AC, 1195 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 29 23, bytestream -9 [h264 @ 0x7f813c821600] concealing 300 DC, 300 AC, 300 MV errors in P frame [h264 @ 0x7f813c824600] error while decoding MB 30 25, bytestream -10 [h264 @ 0x7f813c824600] concealing 219 DC, 219 AC, 219 MV errors in P frame [h264 @ 0x7f813c831800] error while decoding MB 27 27, bytestream -8 [h264 @ 0x7f813c831800] concealing 142 DC, 142 AC, 142 MV errors in P frame [h264 @ 0x7f813c83ea00] error while decoding MB 13 23, bytestream -6184320.0kbits/s dup=34 drop=0 speed=1.42x [h264 @ 0x7f813c83ea00] concealing 316 DC, 316 AC, 316 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 37 12, bytestream -5 [h264 @ 0x7f813c84bc00] concealing 732 DC, 732 AC, 732 MV errors in P frame [h264 @ 0x7f813c866000] error while decoding MB 27 2, bytestream -6 [h264 @ 0x7f813c866000] concealing 1142 DC, 1142 AC, 1142 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 22 25, bytestream -10 [h264 @ 0x7f813c873200] concealing 227 DC, 227 AC, 227 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 5 15, bytestream -6 [h264 @ 0x7f813c880400] concealing 644 DC, 644 AC, 644 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 27 13, bytestream -8 [h264 @ 0x7f813c84bc00] concealing 702 DC, 702 AC, 702 MV errors in P frame [h264 @ 0x7f813c858e00] error while decoding MB 33 15, bytestream -12 [h264 @ 0x7f813c858e00] concealing 616 DC, 616 AC, 616 MV errors in P frame [h264 @ 0x7f813c866000] error while decoding MB 39 16, bytestream -5 [h264 @ 0x7f813c866000] concealing 570 DC, 570 AC, 570 MV errors in P frame [h264 @ 0x7f813c831800] error while decoding MB 27 29, bytestream -8 [h264 @ 0x7f813c831800] concealing 62 DC, 62 AC, 62 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 35 29, bytestream -5184320.0kbits/s dup=38 drop=0 speed=1.42x [h264 @ 0x7f813c873200] concealing 54 DC, 54 AC, 54 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 32 14, bytestream -14 [h264 @ 0x7f813c821600] concealing 657 DC, 657 AC, 657 MV errors in P frame [h264 @ 0x7f813c824600] error while decoding MB 29 22, bytestream -7 [h264 @ 0x7f813c824600] concealing 340 DC, 340 AC, 340 MV errors in P frame [h264 @ 0x7f813c831800] error while decoding MB 8 13, bytestream -7 [h264 @ 0x7f813c831800] concealing 721 DC, 721 AC, 721 MV errors in P frame [NULL @ 0x7f813c808000] missing picture in access unit with size 1448 [h264 @ 0x7f813c83ea00] no frame! [h264 @ 0x7f813c84bc00] error while decoding MB 9 16, bytestream -19 [h264 @ 0x7f813c84bc00] concealing 600 DC, 600 AC, 600 MV errors in P frame [h264 @ 0x7f813c858e00] error while decoding MB 24 18, bytestream -16 [h264 @ 0x7f813c858e00] concealing 505 DC, 505 AC, 505 MV errors in P frame Error while decoding stream #0:0: Invalid data found when processing input [h264 @ 0x7f813c866000] error while decoding MB 22 13, bytestream -5 [h264 @ 0x7f813c866000] concealing 707 DC, 707 AC, 707 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 11 29, bytestream -6 [h264 @ 0x7f813c880400] concealing 78 DC, 78 AC, 78 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 38 14, bytestream -6 [h264 @ 0x7f813c821600] concealing 651 DC, 651 AC, 651 MV errors in P frame [h264 @ 0x7f813c824600] error while decoding MB 6 17, bytestream -6 [h264 @ 0x7f813c824600] concealing 563 DC, 563 AC, 563 MV errors in P frame [h264 @ 0x7f813c83ea00] error while decoding MB 19 27, bytestream -5 [h264 @ 0x7f813c83ea00] concealing 150 DC, 150 AC, 150 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 18 17, bytestream -9 [h264 @ 0x7f813c84bc00] concealing 551 DC, 551 AC, 551 MV errors in P frame [h264 @ 0x7f813c858e00] error while decoding MB 38 9, bytestream -16 [h264 @ 0x7f813c858e00] concealing 851 DC, 851 AC, 851 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 8 19, bytestream -7=184320.0kbits/s dup=41 drop=0 speed=1.42x [h264 @ 0x7f813c880400] concealing 481 DC, 481 AC, 481 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 24 21, bytestream -14 [h264 @ 0x7f813c821600] concealing 385 DC, 385 AC, 385 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 26 23, bytestream -5 [h264 @ 0x7f813c873200] concealing 303 DC, 303 AC, 303 MV errors in P frame [h264 @ 0x7f813c83ea00] error while decoding MB 31 26, bytestream -25 [h264 @ 0x7f813c83ea00] concealing 178 DC, 178 AC, 178 MV errors in P frame [h264 @ 0x7f813c866000] error while decoding MB 25 28, bytestream -6 [h264 @ 0x7f813c866000] concealing 104 DC, 104 AC, 104 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 23 29, bytestream -1284320.0kbits/s dup=44 drop=0 speed=1.42x [h264 @ 0x7f813c821600] concealing 66 DC, 66 AC, 66 MV errors in P frame [h264 @ 0x7f813c831800] error while decoding MB 23 20, bytestream -19 [h264 @ 0x7f813c831800] concealing 426 DC, 426 AC, 426 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 27 26, bytestream -10 [h264 @ 0x7f813c84bc00] concealing 182 DC, 182 AC, 182 MV errors in P frame [h264 @ 0x7f813c858e00] error while decoding MB 31 26, bytestream -10 [h264 @ 0x7f813c858e00] concealing 178 DC, 178 AC, 178 MV errors in P frame [h264 @ 0x7f813c866000] error while decoding MB 8 25, bytestream -8 [h264 @ 0x7f813c866000] concealing 241 DC, 241 AC, 241 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 39 27, bytestream -8 [h264 @ 0x7f813c873200] concealing 130 DC, 130 AC, 130 MV errors in P frame [h264 @ 0x7f813c83ea00] error while decoding MB 26 13, bytestream -10 [h264 @ 0x7f813c83ea00] concealing 703 DC, 703 AC, 703 MV errors in P frame [h264 @ 0x7f813c866000] error while decoding MB 5 23, bytestream -6 [h264 @ 0x7f813c866000] concealing 324 DC, 324 AC, 324 MV errors in P frame [h264 @ 0x7f813c880400] error while decoding MB 39 4, bytestream -9=184320.0kbits/s dup=47 drop=0 speed=1.41x [h264 @ 0x7f813c880400] concealing 1050 DC, 1050 AC, 1050 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 27 27, bytestream -5 [h264 @ 0x7f813c821600] concealing 142 DC, 142 AC, 142 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 18 3, bytestream -7 [h264 @ 0x7f813c84bc00] concealing 1111 DC, 1111 AC, 1111 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 39 19, bytestream -8 [h264 @ 0x7f813c873200] concealing 450 DC, 450 AC, 450 MV errors in P frame [h264 @ 0x7f813c866000] error while decoding MB 28 23, bytestream -6 [h264 @ 0x7f813c866000] concealing 301 DC, 301 AC, 301 MV errors in P frame [h264 @ 0x7f813c824600] error while decoding MB 35 7, bytestream -5=184320.0kbits/s dup=51 drop=0 speed=1.41x [h264 @ 0x7f813c824600] concealing 934 DC, 934 AC, 934 MV errors in P frame [h264 @ 0x7f813c83ea00] error while decoding MB 19 29, bytestream -7 [h264 @ 0x7f813c83ea00] concealing 70 DC, 70 AC, 70 MV errors in P frame [h264 @ 0x7f813c873200] error while decoding MB 37 16, bytestream -6 [h264 @ 0x7f813c873200] concealing 572 DC, 572 AC, 572 MV errors in P frame [h264 @ 0x7f813c831800] error while decoding MB 16 12, bytestream -5 [h264 @ 0x7f813c831800] concealing 753 DC, 753 AC, 753 MV errors in P frame [h264 @ 0x7f813c866000] error while decoding MB 29 13, bytestream -6 [h264 @ 0x7f813c866000] concealing 700 DC, 700 AC, 700 MV errors in P frame [h264 @ 0x7f813c821600] error while decoding MB 31 8, bytestream -6=184320.0kbits/s dup=55 drop=0 speed=1.42x [h264 @ 0x7f813c821600] concealing 898 DC, 898 AC, 898 MV errors in P frame [h264 @ 0x7f813c84bc00] error while decoding MB 11 22, bytestream -6 [h264 @ 0x7f813c84bc00] concealing 358 DC, 358 AC, 358 MV errors in P frame frame= 400 fps= 35 q=-0.0 Lsize= 360000kB time=00:00:16.00 bitrate=184320.0kbits/s dup=56 drop=0 speed=1.41x video:360000kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% Traceback (most recent call last): File "videoFeed.py", line 19, in  image = image.reshape((480,640,3)) # Notice how height is specified first and then width ValueError: cannot reshape array of size 0 into shape (480,640,3) 

    He leído en alguna parte que pueden surgir problemas si no empiezas a leer desde un canal tan pronto como comienza a recibir datos, pero si alguien puede señalar posibles problemas que podrían ser útiles.

    Actualizar

    Puedo obtener una imagen de calidad de la cámara usando netcat mientras le doy la salida a mplayer:

    sudo nc -l 777 | mplayer -fps 200 -demuxer h264es -

    Así que solo puedo asumir que esto tiene más que ver con la forma en que estoy procesando la alimentación que con la forma en que se está construyendo la tubería.

    Más pruebas

    Usando el siguiente guión, puedo leer el video de la tubería fifo264, pero también está terminando.

     import cv2 import sys video_capture = cv2.VideoCapture(r'fifo264') video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640); video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480); while True: # Capture frame-by-frame ret, frame = video_capture.read() if ret == False: pass cv2.imshow('Video', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break # When everything is done, release the capture video_capture.release() cv2.destroyAllWindows() 

    Streaming desde la Raspberry PI con:

     #!/bin/bash raspivid -ih -vs -vf -n -w 640 -h 480 -o - -t 0 -b 2000000 | nc -v 10.0.0.3 777 

    Error y salida producidos:

     [h264 @ 0x7fb25005d400] error while decoding MB 22 28, bytestream -8 [h264 @ 0x7fb250068c00] error while decoding MB 8 24, bytestream -9 [h264 @ 0x7fb25005d400] error while decoding MB 2 18, bytestream -5 [h264 @ 0x7fb250060400] error while decoding MB 23 11, bytestream -7 [h264 @ 0x7fb250073000] error while decoding MB 22 18, bytestream -11 [h264 @ 0x7fb250073600] error while decoding MB 36 9, bytestream -5 [h264 @ 0x7fb250067a00] error while decoding MB 29 23, bytestream -8 [NULL @ 0x7fb251155a00] missing picture in access unit with size 1448 [h264 @ 0x7fb251155400] Got unexpected packet size after a partial decode [h264 @ 0x7fb251155400] Got unexpected packet size after a partial decode [h264 @ 0x7fb251155400] Got unexpected packet size after a partial decode [NULL @ 0x7fb251155a00] missing picture in access unit with size 1448 [h264 @ 0x7fb251155400] Got unexpected packet size after a partial decode [h264 @ 0x7fb25005d400] error while decoding MB 35 2, bytestream -6 [NULL @ 0x7fb251155a00] missing picture in access unit with size 1200 [h264 @ 0x7fb25005d400] No start code is found. [h264 @ 0x7fb25005d400] Error splitting the input into NAL units. OpenCV(3.4.0-dev) Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /Users/jamie/opencv/modules/highgui/src/window.cpp, line 356 Traceback (most recent call last): File "video3.py", line 14, in  cv2.imshow('Video', frame) cv2.error: OpenCV(3.4.0-dev) /Users/jamie/opencv/modules/highgui/src/window.cpp:356: error: (-215) size.width>0 && size.height>0 in function imshow 

    En última instancia, esto no fue un resultado de la tubería, la plataforma o los permisos. El video que se estaba generando en la Raspberry Pi y canalizado a la secuencia de comandos de Python no se estaba manejando correctamente.

    Terminé adaptando esta receta picamera de python.

    En la Raspberry Pi: (createStream.py)

     import io import socket import struct import time import picamera # Connect a client socket to my_server:8000 (change my_server to the # hostname of your server) client_socket = socket.socket() client_socket.connect(('10.0.0.3', 777)) # Make a file-like object out of the connection connection = client_socket.makefile('wb') try: with picamera.PiCamera() as camera: camera.resolution = (1024, 768) # Start a preview and let the camera warm up for 2 seconds camera.start_preview() time.sleep(2) # Note the start time and construct a stream to hold image data # temporarily (we could write it directly to connection but in this # case we want to find out the size of each capture first to keep # our protocol simple) start = time.time() stream = io.BytesIO() for foo in camera.capture_continuous(stream, 'jpeg', use_video_port=True): # Write the length of the capture to the stream and flush to # ensure it actually gets sent connection.write(struct.pack(' 

    En la máquina que está procesando el flujo: (processStream.py)

     import io import socket import struct import cv2 import numpy as np # Start a socket listening for connections on 0.0.0.0:8000 (0.0.0.0 means # all interfaces) server_socket = socket.socket() server_socket.bind(('0.0.0.0', 777)) server_socket.listen(0) # Accept a single connection and make a file-like object out of it connection = server_socket.accept()[0].makefile('rb') try: while True: # Read the length of the image as a 32-bit unsigned int. If the # length is zero, quit the loop image_len = struct.unpack(' 

    Esta solución tiene resultados similares al video al que hice referencia en mi pregunta original. Los marcos de mayor resolución aumentan la latencia de la fuente, pero esto es tolerable para los propósitos de mi aplicación.

    Primero debe ejecutar processStream.py, y luego ejecutar createStream.py en la Raspberry Pi