Java 在android中,如何使用openCV计算图像中的行数

Java 在android中,如何使用openCV计算图像中的行数,java,android,opencv,Java,Android,Opencv,这就是我尝试的。我在Imageview对象的img2中以灰度图像的形式得到输出 问题在于行。cols()将所有内容都视为一行 我希望计数正好是1stpic中显示的较大的线的数量(我指的是分隔停车场的线,汽车可以在其中停车)谁能告诉我如何获得停车线的准确计数。我使用了openCV 2.4版。我已经为此工作了两天 public String getCount() { Bitmap bitmap = BitmapFactory.decodeResource(getApplicationCo

这就是我尝试的。我在Imageview对象的img2中以灰度图像的形式得到输出

问题在于行。cols()将所有内容都视为一行

我希望计数正好是1stpic中显示的较大的线的数量(我指的是分隔停车场的线,汽车可以在其中停车)谁能告诉我如何获得停车线的准确计数。我使用了openCV 2.4版。我已经为此工作了两天

 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;
}
公共字符串getCount(){
位图Bitmap=BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.park);
mat=新mat();
边缘=新垫();
Mat mRgba=新Mat(612816,CvType.CV_8UC1);
垫线=新垫();
位图映射器(位图、mat);
Imgproc.Canny(垫,边缘,50,90);
int阈值=50;
int minLineSize=20;
int-lineGap=20;
Imgproc.HoughLinesP(边、线、1、Math.PI/180、阈值、最小线大小、线间距);
int count=lines.cols();
int conn=lines.rows();
System.out.println(“count=“+count”);
System.out.println(“con=“+con”);
String cou=String.valueOf(count);
对于(int x=0;x
您应该修改关于OpenCV计数的众多答案中的一个,其中每种不同情况的检测都不同。你应该为停车线制作自己的模型。检查其中一些方法/探测器,或

您还可以修改一些适用于硬币的其他答案,如下面的答案,但您应该搜索停车线的形状,而不是硬币: