Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android中的车辆检测与跟踪_Java_Android_Opencv_Machine Learning_Detection - Fatal编程技术网

Java android中的车辆检测与跟踪

Java android中的车辆检测与跟踪,java,android,opencv,machine-learning,detection,Java,Android,Opencv,Machine Learning,Detection,我目前正在开发一个android应用程序,用于检测和跟踪在特定道路上行驶的任何类型的车辆。我目前正在使用openCV库来完成这项工作。经过这么多天的阅读,我已经意识到我需要使用BackgroundSubtractorMOG来检测运动,但我如何识别物体,特别是车辆。 我分为两个不同的概念,即:级联分类器和光流。我真的不知道这些是不是我需要的。 我实际上得到了一个haar分类器,我试图在以下代码段中实现它: public Mat onCameraFrame(CameraBridgeViewBase

我目前正在开发一个android应用程序,用于检测和跟踪在特定道路上行驶的任何类型的车辆。我目前正在使用openCV库来完成这项工作。经过这么多天的阅读,我已经意识到我需要使用BackgroundSubtractorMOG来检测运动,但我如何识别物体,特别是车辆。 我分为两个不同的概念,即:级联分类器和光流。我真的不知道这些是不是我需要的。 我实际上得到了一个haar分类器,我试图在以下代码段中实现它:

 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;
}
CameraFrame上的公共Mat(CameraBridgeViewBase.CvCameraViewFrame inputFrame){
mRgb=inputFrame.rgba();
mGray=inputFrame.gray();
背景2.应用(mGray,mFGMask,0.5d);
//形态开口
侵蚀(mFGMask,mFGMask,新材料());
Imgproc.deflate(mFGMask,mFGMask,new Mat());
//形态闭合
Imgproc.deflate(mFGMask,mFGMask,new Mat());
侵蚀(mFGMask,mFGMask,新材料());
//mJavaDetector早期定义为
//mJavaDetector=新的级联分类器(mcascadible.getAbsolutePath());
MatOfRect车辆=新MatOfRect();
如果(mJavaDetector!=null){
mJavaDetector.detectMultiScale(mFGMask,车辆,1.1,1,2,新尺寸(0,0),新尺寸());
}
Rect[]vehiclesArray=vehicles.toArray();
对于(int i=0;i
运行此命令后,我在屏幕上没有任何检测到的迹象。 我的问题是:

  • 这个项目在安卓系统中可行吗
  • 如果是,您会建议什么样的最佳方法
  • 能数一数这些车辆吗
  • 是否也可以将车辆分类

  • 对于这种涉及多个概念的问题,要想得到好的答案,最好有好的标签,而不仅仅是android和openCV。@sandesh感谢您的观察。我对它进行了编辑,以反映更多的标签。要想对这类涉及多个概念的问题获得好的答案,最好有好的标签,而不仅仅是android和openCV。@sandesh感谢您的观察。我对其进行了编辑,以反映更多的标记。