很多时候我们不在家的时候,都希望能够了解到家里的情况,这时候你可能想到需要一个web摄像头来进行监控,但是作为一个410c开放爱好者,我们去买一个这样的摄像头就太浪费了,今天就带大家一起来用手中的dragonbaord 410c开发板来实现一些个简单的带有运动追踪功能的摄像头,废话不多说,接下来上干货。
一、准备工作
准备一块dragonboard 410c开发板、一个USB摄像头、鼠标、键盘当然还有适配器和能够接入网络的wifi热点。
这里鼠标和键盘主要是用来进行开发,如果你的dragonboard 410c开发板已经安装好了debain操作系统,这里我们接下来的工作将全部在dragonboard 410c开发板上完成,不需要PC机,具体环境搭建参考如下:
按照上述环境搭建后,就可以启动你的dragonboard410c开发板了,这里首先我们不连接摄像头,直接连接鼠标,因为还需要配置你的dragonboard 410c开发板的网络和在上面进行编程,编号程序后运行程序的时候再讲鼠标拔掉,连接USB摄像头。
二、代码实现
整个开发过程中采用Python脚本语言来进行设计,并且借助于opencvpython库来进行相关的图形处理操作,废话不多说,具体代码如下:
#!/usr/bin/env python
import argparse
import dateTIme
import imuTIls
import TIme
import cv2
import numpy as np
ap = argparse.ArgumentParser
ap.add_argument
ap.add_argument
args = vars
ifargs.get
TIme.sleep
else:
camera = cv2.VideoCapture
framenext = None
firstFrame = None
i=0
while True:
text = "Unoccupied"
if not grabbed:
break
frame = imutils.resize
framenext = frame
gray = cv2.cvtColor
#gray_pre = np.float32
gray = cv2.GaussianBlur
if firstFrame is None:
firstFrame = gray
continue
frameDelta = cv2.absdiff
thresh = cv2.threshold
for c in cnts:
# if the contour is too small, ignore it
if cv2.contourArea
cv2.rectangle
text = "Occupied"
# caculation feature points
graynext =cv2.cvtColor
#graynext = np.float32
keypoints = detector.detect
framenext=cv2.drawKeypoints
# draw the text and timestamp on the frame
cv2.putText
cv2.putText
cv2.imshow
cv2.imshow
cv2.imshow
cv2.imshow
#key = cv2.waitKey
cv2.destroyAllWindows
#Send the message via our own SMTP server
sender = 'from@runoob.com'
receivers = ['XXXXXXXXXX@thundersoft.com']
text = MIMEText
image_url = "./detected_face.jpg"
image = MIMEImage
image.add_header
message = MIMEMultipart
message['From'] = Header
message['To'] = Header
subject = 'Python SMTP Test'
message['Subject'] = Header
message.attach
message.attach
try:
smtpObj=smtplib.SMTP
#smtpObj.set_debuglevel
smtpObj.sendmail
smtpObj.quit
print"done!"
except smtplib.SMTPException:
print "error:send failed"
三、测试
编写好代码后保存,然后使用Python monition_camera.py命令就可以运行上述代码了,这里我们收到的邮件及附件效果如下,由于涉及到隐私具体的跟踪人体目标就不展示了,大家下载代码实现即可以看到效果。