我目前正在开发一个Android应用程序来检测和跟踪在特定道路上行驶的任何类型的车辆。我目前正在使用openCV库来执行此操作。经过这么多天的阅读,我必须意识到我需要使用BackgroundSubtractorMOG来检测运动,但是我如何识别特定的车辆对象。 我扼杀了两个不同的概念,即:级联分类器和光流。不知道这些是否是我需要的。 我实际上有一个haar分类器here,我试图在以下代码片段中实现:
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgb = inputFrame.rgba();
mGray = inputFrame.gray();
backgroundSubtractorMOG2.apply(mGray, mFGMask, 0.5d);
//morphological opening
Imgproc.erode(mFGMask, mFGMask, new Mat());
Imgproc.dilate(mFGMask, mFGMask, new Mat());
//morphological closing
Imgproc.dilate(mFGMask, mFGMask, new Mat());
Imgproc.erode(mFGMask, mFGMask, new Mat());
//mJavaDetector was earlier defined as
// mJavaDetector = new CascadeClassifier(mCascadeFile.getAbsolutePath());
MatOfRect vehicles = new MatOfRect();
if (mJavaDetector != null) {
mJavaDetector.detectMultiScale(mFGMask, vehicles, 1.1, 1, 2, new Size(0,0), new Size());
}
Rect[] vehiclesArray = vehicles.toArray();
for (int i = 0; i < vehiclesArray.length; i++)
Imgproc.rectangle(mRgb, vehiclesArray[i].tl(), vehiclesArray[i].br(), VEHICLE_RECT_COLOR, 3)
return this.mRgb;
}
运行此功能后,屏幕上没有任何检测到的迹象。 我的问题是: