前几天写了一个小的项目关于:当手机处于静止状态时,识别是否动或者前方有不同物体
MainActivity
public class MainActivity extends Activity implements SurfaceHolder.Callback,
PreviewCallback {
// 定义对象
private SurfaceView mSurfaceview = null; // SurfaceView对象:(视图组件)视频显示
private SurfaceHolder mSurfaceHolder = null; // SurfaceHolder对象:(抽象接口)SurfaceView支持类
private Camera mCamera;
private Camera.Parameters parameters = null;
private Bitmap bitmap;// 原图
private Bitmap tempBitmap;// temp bitmap
private Bitmap bitmap_;//处理后的bitmap
private Bitmap bgBitmap;//背景图
private Bitmap bgBitmap_;//处理后的背景图片
private ImageView img;
private SurfaceView view;
private long times = 0l;//连续多久不动时间
private long indexFrame = 0l;
private static final String TAG ="MainActivity";
private long times_ = 0l;//temp time
private int police_time = 25;//持续时间
private int police_time_ = 10;//持续时间
private long times_2 = 0l;//报警确认次数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera_layout);
init();
}
// OpenCV库加载并初始化成功后的回调函数
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
// TODO Auto-generated method stub
switch (status) {
case BaseLoaderCallback.SUCCESS:
Log.i(TAG, "成功加载");
break;
default:
super.onManagerConnected(status);
Log.i(TAG, "加载失败");
break;
}
}
};
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
// load OpenCV engine and init OpenCV library
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_4,
getApplicationContext(), mLoaderCallback);
Log.i(TAG, "onResume sucess load OpenCV...");
}
// 初始化控件
private void init() {
// SurfaceView
view = (SurfaceView) findViewById(R.id.surface_view);
// 照相机预览的空间
view.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
view.getHolder().setFixedSize(1920, 1080); // 设置Surface分辨率
view.getHolder().setKeepScreenOn(true);// 屏幕常亮
view.getHolder().addCallback(this);// 为SurfaceView的句柄添加一个回调函数
// ImageView
img = (ImageView) findViewById(R.id.img_res);
}
// SurfaceHoder.Callback
// 当SurfaceView/预览界面的格式和大小发生改变时,该方法被调用
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
parameters = mCamera.getParameters(); // 获取各项参数
mCamera.setParameters(parameters);
parameters.setPictureFormat(PixelFormat.JPEG); // 设置图片格式
parameters.setPreviewSize(width, height); // 设置预览大小
parameter