基于python的移动物体检测_感兴趣区域的移动物体检测,框出移动物体的轮廓 (固定摄像头, opencv-python)...

本文介绍了如何使用Python和OpenCV库来检测固定摄像头中的移动物体,通过差值提取和轮廓识别技术,框选出移动物体的轮廓。文章详细讲解了核心代码,包括阈值处理、轮廓查找和多边形近似等步骤,同时探讨了算法的局限性和可能的改进方法,如结合深度学习进行目标检测。
摘要由CSDN通过智能技术生成

感兴趣区域、特定区域、框出移动物体的轮廓、越界检测、入侵物体检测、使用 opencv-python库的函数cv2.findContours、cv2.approxPolyDP、cv2.arcLength,利用固定摄像头拍摄的实时视频,框出移动物体的轮廓(即FrogEyes蛙眼移动物体侦测)

对移动目标的轮廓的框选,将使用下面这篇文章提及的方法:曾伊言:边缘检测,框出物体的轮廓(使用opencv-python的函数cv2.findContours() )​zhuanlan.zhihu.com

移动物体框选结果预览(即便镜头被移动了,它也能够自己调整回来,方法后面会讲):https://www.zhihu.com/video/997056905654755328

核心代码预览(可以先看看我用到了哪些函数,完整版代码(点击查看)已上传到github):

...

# 差值提取的核心代码

dif = np.abs(dif - img_back)

gray = cv2.cvtColor(dif, cv2.COLOR_BGR2GRAY)

ret, thresh = cv2.threshold(gray, self.min_thresh, 255, 0) # 对差值取阈值,和激活函数Relu有点像

thresh = cv2.blur(thresh, (self.thresh_blur, self.thresh_blur)) # 模糊的这个操作是很重要的

...

...

# 计算得出轮廓的核心代码

thresh, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

...

approxs = [cv2.approxPolyDP(cnt, self.min_side_len, True) for cnt in contours]

approxs = [approx for approx in approxs

if len(approx) > self.min_side_num and cv2.arcLength(approx, True) > self.min_poly_len]

contours = approxs

...2018-06-30 初版 Yonv1943

2018-07-02 对RrawROI的注释方案,即对region_of_interest_pts 的赋值

传言青蛙蹲在地上不动的时候,将死掉不动的小昆虫摆放在它的眼前,青蛙也无动于衷。而当某些小昆虫在青蛙眼前飞来飞去的时候,青蛙会注意到它们,然后将它们吃了。我这个程序也可“注意到”镜头拍摄到的移动物体,因此我也将它称为 FrogEyes。

这是传统的图像处理(不涉及深度学习)࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值