Сопоставление шаблонов Java OPENCV дает неправильные координаты?

поэтому в основном я использую сопоставление шаблонов Opencv, и он находит правильное совпадение в основном изображении, но заданные координаты совпадения неверны.

основное изображение

основное изображение

фрагмент изображения

subimage

результат

результат

Как вы можете видеть на третьем рисунке, алгоритм нашел правильное совпадение. Также я написал print x, y, чтобы увидеть координаты совпадения, и это дало мне следующие координаты: 330, 1006. Значение x правильное, но значение y неверное? как это возможно?

Код метода сопоставления с шаблоном:

public void FindImageInFOE() {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat source = null;
    Mat template = null;
    String filePath = "C:\\Users\\Gerrit\\Desktop\\";
    //Load image file
    source = Imgcodecs.imread(filePath + "jpgbeeld.jpg");
    template = Imgcodecs.imread(filePath + "jpghelpen.jpg");

    Mat outputImage = new Mat();
    int machMethod = Imgproc.TM_CCOEFF;
    //Template matching method
    Imgproc.matchTemplate(source, template, outputImage, machMethod);

    Core.MinMaxLocResult mmr = Core.minMaxLoc(outputImage);
    Point matchLoc = mmr.maxLoc;
    //Draw rectangle on result image
    Imgproc.rectangle(source, matchLoc, new Point(matchLoc.x + template.cols(),
            matchLoc.y + template.rows()), new Scalar(255, 255, 255));

    x = matchLoc.x;
    y = matchLoc.y;

    Imgcodecs.imwrite(filePath + "succes.png", source);
    System.out.println("Complated.");
}

person Gerrit    schedule 21.05.2019    source источник


Ответы (1)


Координата Y правильная, отсчитывается от верха экрана.

Вверху слева (0,0), внизу справа (1920,1080) на FullHD

person J.D.    schedule 21.05.2019
comment
Ну, в этом случае что-то идет не так, потому что я использую util.java.robot, чтобы щелкнуть по координатам x, y, и он щелкает намного ниже совпадения? Он нажимает на правый x, но намного ниже правой координаты y? - person Gerrit; 21.05.2019
comment
Я не уверен, но, возможно, вам нужно учитывать смещение, создаваемое панелью окна вверху, в зависимости от реализации вашего робота. Если нет, вы можете открыть новый вопрос о том, что робот не нажимает на указанные координаты. - person J.D.; 21.05.2019
comment
спасибо, я нашел решение, i.imgur.com/RcJXlia.jpg, у меня было это дерьмо на 125% и теперь на 100% и работает нормально... - person Gerrit; 21.05.2019