使用cv2检测运动的物体
2018-01-10 20:35
513 查看
使用cv2检测运动的物体
本篇博文将介绍如何使用python里面的cv2模块检测运动的物体(应该没啥地方可以用到),用到的方法是求出帧的变化量,下面是代码和代码的解释:# encoding:utf-8 import cv2 import imutils cap = cv2.VideoCapture(0) avg = None while(True): # 抓取原始Numpy数组来表示图像并且初始化 ret, frame = cap.read() # 调整帧尺寸,转换为灰阶图像并进行模糊 frame = imutils.resize(frame, width=500) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray, (21, 21), 0) # 如果平均帧是None,初始化它 if avg is None: avg = gray.copy().astype("float") cv2.accumulateWeighted(gray, avg, 0.5) frameDelta = cv2.absdiff(gray, cv2.convertScaleAbs(avg)) # 对变化的图像进行阈值化,膨胀阈值图像来填补 thresh = cv2.threshold(frameDelta, 5, 255, cv2.THRESH_BINARY)[1] thresh = cv2.dilate(thresh, None, iterations=2) _, cnts, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 遍历轮廓线 for c in cnts: if cv2.contourArea(c) < 5000: continue # 计算轮廓线的外框,为当前帧画上外框 # 更新文本 (x, y, w, h) = cv2.boundingRect(c) cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) text = "people" cv2.putText(frame, "Room Status: {}".format(text), (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) cv2.putText(frame,"people", (10, frame.shape[0] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 0, 255), 1) cv2.namedWindow("capture") cv2.imshow("capture", frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
相关文章推荐
- OpenCV 使用光流法检测物体运动
- OpenCV 使用光流法检测物体运动
- OpenCV 使用光流法检测物体运动
- OpenCV 使用光流法检测物体运动
- opencv 检测运动物体 例子时出现图像反转
- opencv检测运动物体的基础_特征提取
- 【OpenCV学习笔记】四十、运动物体检测(二)
- 使用TensorFlow Object Detection API进行图像物体检测
- AR/VR learning (3)--物体的运动与动画(iTween插件的使用)
- 读视频文件和运动物体检测cvCaptureFromCAM cvQueryFrame
- OpenCV之feature2d 模块. 2D特征框架(2)特征描述 使用FLANN进行特征点匹配 使用二维特征点(Features2D)和单映射(Homography)寻找已知物体 平面物体检测
- 运动物体的检测--对视频检测
- OpenCV利用背景建模检测运动物体
- 第十一期 使用 Tensorflow 实现物体检测 《显卡就是开发板》
- 视频 背景建模,运动物体检测
- unity解决快速运动物体碰撞检测穿透问题
- 运动物体检测——光流法(摄像机固定)
- OpenCV中文网站例程——读视频文件和运动物体检测
- 读视频文件和运动物体检测
- 三帧差分法 - 运动物体检测 - 行人检测 - 学习研究过程