Каждый раз разные результаты - PullRequest
0 голосов
/ 16 июня 2020

Я новый программист на android. Когда я запустил код на Java, я получил результат: маска изображения с i = 0 и j = 0: введите здесь описание изображения

    private void recognizeAnswers(){

    for(int i = 0; i< bubbles.size(); i+=options.length) {

        List<MatOfPoint> rows = bubbles.subList(i, i+options.length);

        int[][] filled = new int[rows.size()][4];

        for (int j = 0; j < rows.size(); j++) {

            MatOfPoint col = rows.get(j);
            List<MatOfPoint> list = Arrays.asList(col);
            Mat mask = new Mat(thresh.size(), CvType.CV_8UC1);
            drawContours(mask.submat(roi), list, -1, new Scalar(255, 0, 0), -5);
            Mat conjuction = new Mat(thresh.size(), CvType.CV_8UC1);
            Core.bitwise_and(thresh, mask, conjuction);

Однако, когда я запустил Тот же код выше в Adroid Studio, я получил результат: маска изображения с i = 0 и j = 0: введите описание изображения здесь

Это неверно для первых изображений и других изображений одинаковы в обоих случаях. Список переменных в обоих случаях один и тот же.

Более удивлен, когда я реализую метод saveImage в виде кода ниже, все изображения в android будут неправильными:

private void recognizeAnswers(){

    for(int i = 0; i< bubbles.size(); i+=options.length) {

        List<MatOfPoint> rows = bubbles.subList(i, i+options.length);

        int[][] filled = new int[rows.size()][4];

        for (int j = 0; j < rows.size(); j++) {

            MatOfPoint col = rows.get(j);
            List<MatOfPoint> list = Arrays.asList(col);
            Mat mask = new Mat(thresh.size(), CvType.CV_8UC1);
            drawContours(mask.submat(roi), list, -1, new Scalar(255, 0, 0), -5);
            Mat conjuction = new Mat(thresh.size(), CvType.CV_8UC1);
            Core.bitwise_and(thresh, mask, conjuction);
            saveImage(mask,"mask", i, j);

И это saveImage Метод:

   private void SaveImage(Mat Image, String n, int i, int j, String Folder) {
    Bitmap finalBitmap = Bitmap.createBitmap(Image.cols(), Image.rows(),Bitmap.Config.ARGB_8888);
    Utils.matToBitmap(Image, finalBitmap);
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/saved_images" + Folder);
    ///System.out.println("mydir: " + myDir);
    if (!myDir.exists()) {
        myDir.mkdirs();
    }
    Random generator = new Random();
    String fname = n + "_" + i +"_" + j +".jpg";
    File file = new File (myDir, fname);
    if (file.exists ())
        file.delete ();
    try {
        FileOutputStream out = new FileOutputStream(file);
        finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.flush();
        out.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

Кто-нибудь может сказать мне причину и решение для исправления ошибки? Спасибо! Извините за знание английского sh языка!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...