Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Android 如何使用opencv精确计算图像中的行数_Android_Opencv - Fatal编程技术网

Android 如何使用opencv精确计算图像中的行数

Android 如何使用opencv精确计算图像中的行数,android,opencv,Android,Opencv,如何精确计算数字之间的行数,总计数必须6 我用这个方法来计算openCV的行数,得到了灰度图像 lines.cols()是计算图像中行数的正确方法吗 公共字符串Func(){ 位图Bitmap=BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.park); mat=新mat(); 边缘=新垫(); Mat mRgba=新Mat(612816,CvType.CV_8UC1); 垫线=新垫(

如何精确计算数字之间的行数,总计数必须6

我用这个方法来计算openCV的行数,得到了灰度图像

lines.cols()
是计算图像中行数的正确方法吗

公共字符串Func(){
位图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();
System.out.println(“count=“+count”);
String cou=String.valueOf(count);
对于(int x=0;x
根据这一点和一点,您的代码示例似乎是正确的

为了获得更好的效果,在应用canny filter之前,您应该对图像执行颜色阈值,以仅保留白色绘制条带


除此之外,我认为你应该增加你的
minLineSize
,以避免太短的行。

我有较低版本的opencv sdk。我在第一行有错误,你能给我提供下载新版本opencv的链接吗sdk@San你有什么OpenCV版本?我用第二种方法更新了我的帖子,你能试试吗?我现在有2.3版,正在下载3.2。还有一件事,我在安卓系统中使用opencv。你的代码看起来像c++而不是helpful@San你介意解释一下你的问题是什么吗?有错误吗?
public String Func() {

    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();
    System.out.println("count = " + count);
    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;
}