python追踪运动目标物体——初学

  这是一个期末作业,就是写一个程序用于追踪视频中运动的目标物体。完成这个视频首先要下两个库,一个是numpy库,另外一个是opencv 库。

  numpy库的下载安装教程:https://jingyan.baidu.com/article/03b2f78c0473e55ea237aeca.html

  opencv 库的安装过程:在原来已经有pip 工具的基础上,cmd命令行进入到你python软件所在目录下的Scripts文件夹里,输入pip install opencv-python(在计算机联网的条件下,系统就可以通过网络收集资源下载),出现Successfully installed opencv-python 即成功。

下面加一下源代码:

import cv2
import numpy as np
videocap=cv2.VideoCapture('f://PYTHON//test1.mp4')
firstframe=None
while True:
ret,frame=videocap.read()
if not ret:
break
pp=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)      #将RGB转换为GSV
if firstframe is None:                     #前面已经设置为空
firstframe=pp
continue
frameDelta=cv2.absdiff(firstframe,pp)      #帧差法,将firstframe和gray的差值输出到frameDelta中
thresh=cv2.threshold(frameDelta,25,255,cv2.THRESH_BINARY)[1]   #图像二值化(使得图像明显黑白化)
thresh=cv2.dilate(thresh1,None,iterations=2)              
x,y,w,h=cv2.boundingRect(thresh)       #确定目标大小
frame=cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)   #在frame上画出矩形
cv2.imshow("frame",frame)    #原视频文件
cv2.imshow("Thresh",thresh)
cv2.imshow("frameDelta",frameDelta)
key=cv2.waitKey(1)&0xFF
if key==ord("q"):
break
videocap.release()

cv2.destroyAllWindows()

(要注意代码格式以及缩进问题)首先打开一个视频文件,将视频由RGB格式转换为GSV格式,利用帧差法(absdiff),传入两个视频参数,由于背景是相对不变的,由此系统可以明确运动的物体是哪一个。将运动物体识别出来后,我们可以用一个boundingRect方法将目标物体大小确定,在用rectangle方法将目标物体框选出来。其余方法可以自己百度通过来进行更深一步的学习。

视频就不上传了。在做这个作业的时候,我发现拍摄视频的时候由于灯光没有打好,到最后视频中不仅有运动的实物还有明显运动变化的影子,导致最后用于框选目标物体的框范围变化十分之大,有时候会框框会框选住整一个视频界面。由于是赶着写期末作业,我的学习并没有很深入,还不会利用图像特征点检测来确定真实的目标物体,只是用了帧差法来大概确定目标物体。

学习很粗浅,只是作为初步学习的参考,还请各位体谅。

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值