мне нужна функция opencv в java возвращает процент цвета в циновке, пожалуйста - PullRequest
0 голосов
/ 21 июня 2019

мне нужна функция opencv в java, возвращающая процент цвета в мате, пожалуйста

public boolean procentage(Mat imageOne, int porsontageDeChangemnt) {
    boolean tr = false;
    int width = (int) imageOne.width();
    int height = (int) imageOne.height();
    int maxPixel = width * height;
    int cont = 0;
    try {

        for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {

                double[] colorPixel = imageOne.get(i, j);

                if (((int) colorPixel[0] == 255)) {
                    cont++;
                }
            }
        }
    } catch (Exception e) {
    }
    int c = (int) ((cont * 100) / maxPixel);
    if (c >= porsontageDeChangemnt) {
        tr = true;
    }
    if (c > porsontageDeChangemnt) {
        tr = true;
    }
    return tr;
}

исключение в этой строке >> if (((int) colorPixel [0] == 255)) {

1 Ответ

0 голосов
/ 21 июня 2019

Таким образом, вы не предоставили полную реализацию, но я немного изменил ее, чтобы запустить нечто подобное.

Если вы сломаете свой код до базового уровня и попробуете что-то вроде этого:

    for (int j = 0; j < 300; j++) {

        double[] colorPixel = null;  //This what your code thinks it is doing

        if (((int) colorPixel[0] == 255)) {
            System.out.println(colorPixel.toString());
        }

Вы получите то же исключение в той же строке, что и сейчас. Проблема в том, что в какой-то момент вы передаете значение null в imageOne в методе procentage.

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

...