Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Mat bufferedImagetoMat(BufferedImage image, String format) throws IOException {
- ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- ImageIO.write(image, format, byteArrayOutputStream);
- byteArrayOutputStream.flush();
- return Imgcodecs.imdecode(new MatOfByte(byteArrayOutputStream.toByteArray()),
- Imgcodecs.IMREAD_UNCHANGED);
- }
- public int[] find(Mat template, Mat screenMat) {
- // Create the result matrix
- int result_cols = screenMat.cols() - template.cols() + 1;
- int result_rows = screenMat.rows() - template.rows() + 1;
- Mat result = new Mat(result_rows, result_cols, CvType.CV_32FC1);
- int templateMatchingMethod = Imgproc.TM_CCOEFF_NORMED;
- // int templateMatchingMethod = Imgproc.TM_CCORR_NORMED;
- // int templateMatchingMethod = Imgproc.TM_SQDIFF_NORMED;
- Imgproc.matchTemplate(screenMat, template, result, templateMatchingMethod);
- Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
- org.opencv.core.Core.MinMaxLocResult mmr = Core.minMaxLoc(result);
- Point matchLoc;
- if( templateMatchingMethod == Imgproc.TM_SQDIFF || templateMatchingMethod == Imgproc.TM_SQDIFF_NORMED ) {
- matchLoc = mmr.minLoc;
- } else {
- matchLoc = mmr.maxLoc;
- }
- Imgproc.rectangle(screenMat, matchLoc, new Point(matchLoc.x + template.cols(),
- matchLoc.y + template.rows()), new Scalar(0, 255, 0));
- return new int[] { (int) matchLoc.x, (int) matchLoc.y };
- }
Advertisement
Advertisement