首页 > 代码库 > 树莓派+pythonista实时监控系统

树莓派+pythonista实时监控系统

 

客户端(pythonista)

import ui
from PIL import Image
import socket, time, StringIO

global closeFlat
closeFlat = False

def btnStart_tapped(sender):
        global closeFlat
        closeFlat = True
        sender.hidden = True
        

v = ui.load_view()

btnStart = ui.Button(title=End)
btnStart.x = 20
btnStart.y = 250
btnStart.width = 100
btnStart.height = 40
btnStart.background_color = #a3d6ef
btnStart.action = btnStart_tapped
v.add_subview(btnStart)

iv = ui.ImageView()
iv.x = 0
iv.y = 0
iv.width = 320
iv.height = 240
v.add_subview(iv)

v.present(sheet)

host, port = 192.168.199.231, 9996
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))

sock.sendall(next)

f = sock.makefile()

while True:
        msg = f.readline()
        if not msg:
                break
        #print len(msg), msg[-2]
        if closeFlat:
                sock.sendall(close)
                break
        else:
                sock.sendall(next)
        jpeg = msg.replace("\-n", "\n")
        buf = StringIO.StringIO(jpeg[0:-1])
        buf.seek(0)
        #imgg = Image.open(buf)
        #img = ui.Image.from_data(imgg.tostring())
        #imgg.save(‘1122.jpg‘)
        img = ui.Image.from_data(buf.getvalue())
        buf.close()
        #img = ui.Image(‘1122.jpg‘)
        #img = (ui.Image)imgg
        iv.image = img
        #time.sleep(1)

sock.close() 

 

服务器(树莓派)

import numpy as np
import cv2
import time, socket, StringIO
from PIL import Image

print Program start...

capture = cv2.VideoCapture(0)
capture.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320)
capture.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 240)

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((192.168.199.231, 9996))
sock.listen(2)

dst, dst_addr = sock.accept()
print Destination connected by, dst_addr


while True:
    msg = dst.recv(1024)
    print msg
    if msg == next: 

        ret, img = capture.read()
        ret, img = capture.read()
        #print img.shape
    
        img[:, :, [0, 2]] = img[:, :, [2, 0]]   
    
        pi = Image.fromstring("RGB", (img.shape[1], img.shape[0]), img.tostring())
        buf = StringIO.StringIO()
        pi.save(buf, format=JPEG)
        jpeg = buf.getvalue()
        buf.close()
        transfer = jpeg.replace("\n", "\-n")
        print len(transfer), transfer[-1]
    
        try:
            dst.sendall(transfer + "\n")
            #print ‘sendall complete‘
        except Exception as ex:
            dst, dat_addr = sock.accept()
            print Destination connected again by, dst_addr
        except KeyboardInterrupt:
            print Interrupted
            break

    elif msg == close:
        break
    else:
        print Error:The msg from socket is unknow
        break


dst.close()
sock.close() 
capture.release()
print Program end----

 

树莓派+pythonista实时监控系统