Ich möchte einen Imagestream von meinem rbpi zu meinem Server einrichten.Kissen Attribut Fehler
Also möchte ich einen Netzwerk-Stream in der http://picamera.readthedocs.io/en/release-1.12/recipes1.html#streaming-capture discripted einrichten.
Das hat gut funktioniert, aber jetzt möchte ich das aufgenommene Bild speichern.
-> (modifizierte den Server-Skript)
import io
import socket
import struct
from PIL import Image
# 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', 8000))
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('<L', connection.read(struct.calcsize('<L')))[0]
if not image_len:
break
# Construct a stream to hold the image data and read the image
# data from the connection
image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
# Rewind the stream, open it as an image with PIL and do some
# processing on it
image_stream.seek(0)
image = Image.open(image_stream)
print('Image is %dx%d' % image.size)
image.verify()
print('Image is verified')
im = Image.new("RGB", (640,480), "black") #the saving part
im = image.copy()
im.save("./img/test.jpg","JPEG")
finally:
connection.close()
server_socket.close()
Aber es gibt mir folgenden Fehlercode:
Traceback (most recent call last):
File "stream.py", line 33, in <module>
im = image.copy()
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 781, in copy
self.load()
File "/usr/lib/python2.7/dist-packages/PIL/ImageFile.py", line 172, in load
read = self.fp.read
AttributeError: 'NoneType' object has no attribute 'read'
Wie kann ich dieses Problem beheben?
Möglicherweise müssen Sie 'image.load()' vor 'image.copy()' aufrufen. Die Dokumentation macht diesen Ton überflüssig, aber Pillow hat bekanntermaßen Bugs ... – martineau
Dies reduziert den Fehler in Zeile 781. Aber der zweite Fehler ist immer noch da. – Meitoasty