2017-05-11 9 views
0

これは私が試したことです。Imageviewオブジェクトのimg2にグレースケールイメージとして出力があります。アンドロイドでopenCVを使ってイメージの行数を計算するには

問題はlines.cols()がすべてを行と見なすためです。

私は、1stpicに示されているように、正確に大きな行の数にしたい(私は駐車場を分ける線を意味します、車は戸惑うことがあります)My output image正確なカウントを得る方法OpenCVのバージョン2.4.Iを使用していたlines.I駐車場で、過去2日間、この上

public String getCount() { 

    Bitmap bitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.park); 
    mat = new Mat(); 
    edges = new Mat(); 
    Mat mRgba = new Mat(612, 816, CvType.CV_8UC1); 
    Mat lines = new Mat(); 

    Utils.bitmapToMat(bitmap, mat); 
    Imgproc.Canny(mat, edges, 50, 90); 

    int threshold = 50; 
    int minLineSize = 20; 
    int lineGap = 20; 

    Imgproc.HoughLinesP(edges, lines, 1, Math.PI/180, threshold, minLineSize, lineGap); 

    int count = lines.cols(); 
    int coun= lines.rows(); 
    System.out.println("count = " + count); 
    System.out.println("coun = " + coun); 
    String cou = String.valueOf(count); 

    for (int x = 0; x < lines.cols(); x++) { 
     double[] vec = lines.get(0, x); 
     double x1 = vec[0], 
       y1 = vec[1], 
       x2 = vec[2], 
       y2 = vec[3]; 

     Point start = new Point(x1, y1); 
     Point end = new Point(x2, y2); 
     Core.line(mRgba, start, end, new Scalar(255, 0, 0), 3); 

    } 

    Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888); 
    Utils.matToBitmap(mRgba, bmp); 
    bitmap = bmp; 

    Drawable d = new BitmapDrawable(Resources.getSystem(), bitmap); 
    img2.setImageDrawable(d); 

    return cou; 
} 

答えて

0

を働いてきたあなたは、検出の種類は、すべての個別のケースごとに異なるOpenCVののカウントに関する多くの答えの1を変更する必要があります。あなたはパーキングラインのための独自のモデルを作成する必要があります。これらのアプローチ/検出器の一部を確認してくださいHaar cascade classifierlatent SVMまたはBag of Words

また、あなただけは駐車ラインの代わりに、コインの形状を検索する必要があり、コインのために、以下のこの答えのような何か他のもののために働くの回答の一部を変更できます。

http://answers.opencv.org/question/36111/how-to-count-number-of-coins-in-android-opencv/

関連する問題