物体检测的方法有很多,现在主流的方法有光流法、背景查分法、帧间差分法,它们各有各的优缺点;为了计算方便和同时能够检测
到多个物体,这里使用的是背景差分法;
物体检测的步骤大致可分为下面几个部分:高斯滤波器->差值->二值化->边缘检测->逼近矩阵->显示;
要在android系统上实现这些方法可以自己写,但是用到的for循环或其他循环都会浪费很多的时间,从而不利于实时检测;所以这里是
使用了opencv3.0提供的库函数来实现的。
1、高斯滤波器
Imgproc.GaussianBlur(background,background,new Size(5.0,5.0),1.5);
它的作用是用来使得输入的图像变得更加平滑些,有利于减少检测时引入的误差;
2、差值
Core.absdiff(background,mGray,ss);
它的作用是将当前帧和背景帧矩阵相减然后取绝对值并存储在ss矩阵中;
3、二值化
Imgproc.threshold(ss,ss, 40, 255, Imgproc.THRESH_BINARY);
4、边缘检测
Imgproc.findContours(ss, contours, new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_NONE);
5、逼近矩阵
最近一直有人问我,怎么将检测的无边边缘逼近成一个方形或其它形状,其实这个问题很