感兴趣区域、特定区域、框出移动物体的轮廓、越界检测、入侵物体检测、使用 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。
这是传统的图像处理(不涉及深度学习)