2017-01-28 14 views
0

PythonソケットとOpenCVを使用してHTTP経由でWebcamイメージを提供しようとしていますが、正しく動作しません。サーバーはWebcamからキャプチャされた適切なJPEGイメージを提供しません。いくつかのバイナリ配列のみを表示します。 HTTP経由のPython Webcamイメージサーバーで画像が表示されない

import io 
import socket 
import atexit 
from cv2 import * 
from PIL import Image 

def camServer(): 
    while True: 
     print("wait...") 
     conn, addr = server_socket.accept() 
     if conn: 
      print(conn) 
      print(addr) 
      connection = conn.makefile('wb') 
      break 

    print("Connecting") 
    try: 
     cam = VideoCapture(0) 
     s, imgArray = cam.read() 
     if s: 
      atexit.register(onExit) 
      img = io.BytesIO() 
      imgPIL = Image.fromarray(imgArray) 
      imgPIL.save(img, format="jpeg") 
      img.seek(0) 
      connection.write(img.read()) 
      img.seek(0) 
      img.truncate() 
    finally: 
     print("close connection") 
     connection.close() 

def onExit(): 
    connection.close() 
    server_socket.close() 
    print("exit") 

server_socket = socket.socket() 
server_socket.bind(('0.0.0.0', 8000)) 
server_socket.listen(0) 
server_socket.setblocking(1) 

while True: 
    camServer() 

私はここから元のソースコードを発見:Python socket server to send camera image to clientと私の代わりにPICameraのOpenCVのを使用するように変更しました。

Served HTML Server Log

+2

を!今のところ、生のイメージだけが提供されます.HTTPヘッダーやレスポンスが適切にフォーマットされているかのように、httpに必要なものをすべて送信する必要があります。 –

答えて

0

ブラウザで画像を見る能力が必要な場合は、コンテンツタイプの送信:あなたはHTTPを使用していない

atexit.register(onExit) 
img = io.BytesIO() 
imgPIL = Image.fromarray(imgArray) 
imgPIL.save(img, format="jpeg") 
img.seek(0) 

connection.write('HTTP/1.0 200 OK\n') 
connection.write('Content-Type: image/png\n') 
connection.write('\n') 
connection.write(img.read()) 

img.seek(0) 
img.truncate() 
関連する問題