поэтому в основном я использую сопоставление шаблонов Opencv, и он находит правильное совпадение в основном изображении, но заданные координаты совпадения неверны.
основное изображение
фрагмент изображения
результат
Как вы можете видеть на третьем рисунке, алгоритм нашел правильное совпадение. Также я написал 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.");
}
Координата Y правильная, отсчитывается от верха экрана.
Вверху слева (0,0), внизу справа (1920,1080) на FullHD
Я не уверен, но, возможно, вам нужно учитывать смещение, создаваемое панелью окна вверху, в зависимости от реализации вашего робота. Если нет, вы можете открыть новый вопрос о том, что робот не нажимает на указанные координаты.
спасибо, я нашел решение, i.imgur.com/RcJXlia.jpg, у меня было это дерьмо на 125%, а теперь на 100%, и все работает нормально...
Ну, в этом случае что-то идет не так, потому что я использую util.java.robot, чтобы щелкнуть по координатам x, y, и он щелкает намного ниже совпадения? Он нажимает на правый x, но намного ниже правой координаты y?