利用树莓派结合datamark 实现远程移动监控

请输入图片描述

'`#encoding=utf-8
import cv2
import time
from poster.encode import multipart_encode
import urllib2
import os,shutil
import sys
from urllib2 import Request, urlopen, URLError, HTTPError
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import datetime
import socket
import time

DATAMARK=1
TLINK=2
GIZWITS=3
print "open video0"
cap=cv2.VideoCapture(0)
print cap
pre_frame = None
def post(file):

register_openers()
f=open(file, "rb")
datagen, headers = multipart_encode({"myFile": f})
request = urllib2.Request("http://trtos.com/web/datamark/upload.php", datagen, headers)
try:
    response = urllib2.urlopen(request)
    print response.read()
     
except URLError,e:
    print e.reason
    print e.code

def send(context,name,id):
if name==DATAMARK:

   context=context+"\n"
   ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
   ss.connect(('trtos.com',80))
   msg="POST /php/api.php?id="+id+" HTTP/1.1\n"+ \
        "Content-Type: application/x-www-form-urlencoded\n"+ \
        "Host: trtos.com\n"+ \
        "Content-Length: "+str(len(context))+"\n"+ \
        "Expect: 100-continue\n"+ \
        "Connection: Keep-Alive\n\n\n"+context
   ss.sendall(msg)
   ss.close()
   print msg

elif name==TLINK:

   ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
   ss.connect(('tcp.tlink.io',8647))
   time.sleep(1)
   ss.sendall(id)
   time.sleep(1)
   ss.sendall(context)
   ss.close()
   print id,context,name

elif name==GIZWITS:

   print "机智云"
  

while(1):

ret,frame=cap.read()
curframe=frame.copy()
k=cv2.waitKey(1)
gray_img=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray_img=cv2.resize(gray_img, (500, 500))
gray_img=cv2.GaussianBlur(gray_img, (21, 21), 0)
if pre_frame is None:
    pre_frame = gray_img
else:
    img_delta = cv2.absdiff(pre_frame, gray_img)
    thresh = cv2.threshold(img_delta, 25, 255, cv2.THRESH_BINARY)[1]
    thresh = cv2.dilate(thresh, None, iterations=2)
    thresh,contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
    for c in contours:
        if cv2.contourArea(c) < 3000:
             print cv2.contourArea(c)
             continue
        else:
             (x,y,w,h) = cv2.boundingRect(c)
             cv2.rectangle(curframe,(x,y),(x+w,y+h),(0,255,0),2)
             cv2.imwrite("5uT5zGTG.jpg",curframe)
             post("5uT5zGTG.jpg")
             shutil.move("5uT5zGTG.jpg","/home/pi/record/"+datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S')+".jpg")
             send("area:"+str(cv2.contourArea(c)),DATAMARK,"5uT5zGTG")
pre_frame = gray_img
time.sleep(1)

cap.release()`

标签: none

添加新评论