移动侦测是常见的智能化视频监控手段之一,其通过判断和识别移动物体然后进行拍照记录可以有效的降低处理器的计算处理量,只需要在有移动事件触发的时候才进行监控和录像,进而避免监控录制和拍摄大量的无用的照片信息。今天本篇blog就带大家用python语言来简单实现通过usb摄像头采集图像进行移动侦测,侦测到有移动物体后立即拍照保存。
首先还是搭建环境,这里在usb图像采集blog中已经进行了说明,只需要将我们的usb摄像头、鼠标和键盘链接到dragonbaord 410c开发板上即可,如果你使用的是有线的usb鼠标和键盘,usb鼠标和摄像头可以共用一个。
搭建好环境后,我们就可以来进行移动侦测程序的编写了,同样,这里我们直接上干货,具体的代码如下:
#!/usr/bin/env python
import cv2, sys
import numpy as np
# constants
device_number = 0
font_faces = [
cv2.font_hershey_simplex,
cv2.font_hershey_plain,
cv2.font_hershey_duplex,
cv2.font_hershey_complex,
cv2.font_hershey_triplex,
cv2.font_hershey_complex_small,
cv2.font_hershey_script_simplex,
cv2.font_hershey_script_complex
]
#这次代码是在前面的代码的基础上改进的,因此这里保存了我们前面的代码
motion_threshold = 0.3
#初始化web摄像头
vc = cv2.videocapture(device_number)
# check if the webcam init was successful
if vc.isopened(): # try to get the first frame
retval, frame = vc.read()
previous_frame = cv2.cvtcolor(frame, cv2.color_bgr2gray)
else:
sys.exit(1)
#如果摄像头初始化成功,可以成功读取摄像头数据则进入到循环模式,循环处理摄像头图像帧
while retval:
# define the frame which the webcam will show
frame_show = frame
# convert frame to grayscale to make phase comparison
frame = cv2.cvtcolor(frame, cv2.color_bgr2gray)
# convert frames into floating point
f_frame = np.float32(frame)
f_previous_frame = np.float32(previous_frame)
# 构建背景模型
(dx,dy) = cv2.phasecorrelate(f_frame,f_previous_frame)
# determine motion from the phase correlation
if abs(dx) > motion_threshold and abs(dy) > motion_threshold:
#写入文本信息
font_typeface = font_faces[5]
font_scale = 2
font_color = (0,0,255)
font_weight = 5
x = 0
y = 50
cv2.puttext(frame_show, motion!, (x,y), font_typeface, font_scale, font_color, font_weight)
#显示视频
cv2.imshow(db410c workshop #5: motion detection, frame_show)
# retain previous frame for comparison
previous_frame = frame
# 刷新进入下一帧处理
retval, frame = vc.read()
# exit program after waiting for a pressed key
#设置停止退出按键
if cv2.waitkey(1) == 27:
break
以上就是实现整个移动侦测的python代码,非常简单的流程就可以实现对摄像头采集到的图像数据进行移动侦测,如果大家有兴趣还可以在上面进行稍微的修改,就可以将该功能改为对移动物体的识别和追踪,这里后续blog中将进一步向大家介绍。
代码写好后,保存为monition.py,然后运行python monition.py 就可以看到如下效果的监测,当你的摄像头移动的时候系统会在视频上显示motion!表示移动。
GAIA电源电磁干扰(EMI)滤波器
如何看待元宇宙
中国联通利用共建共享可信频谱共享技术完成了业内首个现网示范应用
音乐ID应用Shasham已在iOS上进行了更新设计
关于华为P10/plus智能“黑科技”都体现在哪里,你了解吗
基于Dragonboard 410c开发板的USB摄像头实现移动侦测
BlueField DPUs和DOCA软件栈提供零信任安全
中国200架固定翼无人机集群试飞成功,无人机技术进一步提升
C语言驱动实现
热电偶传感器的特点及测温原理解析
特斯拉比亚迪新能源车销量稳步增长 比亚迪7月新能源车销量达18793辆
FPGA是英特尔成长策略的关键,其动力来自成长引发的良性循环
弹簧垫圈防松原理 弹簧垫圈的防松效果怎么样?
第三届中国智能建筑节即将开启,各大奖项花落谁家
赑屃:作为一名币圈的投资者到底哪些风险需要去规避?
NSA不是假5G 高通骁龙X50真5G手机选择多
5G时代的媒体离得开4K吗
Widora烧写系统的方法
日光灯长度一般有哪些_日光灯管长度尺寸标准
新唐科技M032 系列简介