当前位置: 首页 > news >正文

树莓派+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----'

 

转载于:https://www.cnblogs.com/lulu147/p/6803500.html

相关文章:

  • mysql开发之---使用游标双层嵌套对总表进行拆分为帖子表和回复表
  • window 下安装 wget 命令
  • V8 Ignition:JS 引擎与字节码的不解之缘
  • centos安装vsftp
  • 【zabbix系列】安装与加入host
  • 【Sets】使用Google Guava工程中Sets工具包,实现集合的并集/交集/补集/差集
  • JAVA多线程入门
  • 20145223 杨梦云 《网络对抗》 Web基础
  • ionic入门之数据绑定显示-1
  • TFS 测试用例导入、导出工具
  • IntelliJ IDEA搭建SpringBoot
  • Hadoop OutputFormat浅析
  • php7 安装yar 生成docker镜像
  • 闪屏完善
  • vSphere
  • JavaScript-如何实现克隆(clone)函数
  • Angular 响应式表单之下拉框
  • Bootstrap JS插件Alert源码分析
  • CSS实用技巧干货
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • ReactNativeweexDeviceOne对比
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Vue.js-Day01
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 从零开始在ubuntu上搭建node开发环境
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 解决iview多表头动态更改列元素发生的错误
  • - 转 Ext2.0 form使用实例
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​第20课 在Android Native开发中加入新的C++类
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1)STL算法之遍历容器
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (k8s中)docker netty OOM问题记录
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (转)C#调用WebService 基础
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • 、写入Shellcode到注册表上线
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .Net 4.0并行库实用性演练
  • .Net Core与存储过程(一)
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 药厂业务系统 CPU爆高分析
  • .net和jar包windows服务部署
  • .net生成的类,跨工程调用显示注释
  • .Net小白的大学四年,内含面经
  • .NET序列化 serializable,反序列化
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示