1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import org.opencv.core.Core import org.opencv.core.Mat import org.opencv.core.Point import org.opencv.highgui.HighGui import org.opencv.imgcodecs.Imgcodecs import org.opencv.imgproc.Imgproc import org.opencv.core.Scalar fun main() { // Cargar las imágenes System.loadLibrary(Core.NATIVE_LIBRARY_NAME) val imagenGrande = Imgcodecs.imread("Total.jpeg") val imagenPequena = Imgcodecs.imread("1.jpg") // Realizar la comparación de imágenes val resultado = Mat() Imgproc.matchTemplate(imagenGrande, imagenPequena, resultado, Imgproc.TM_CCOEFF_NORMED) // Encontrar la ubicación de la mejor coincidencia val minMaxLocResult = Core.minMaxLoc(resultado) val mejorCoincidencia = minMaxLocResult.maxLoc // Umbral admitido val threshold = 0.7 // Si la mejor coincidencia supera el umbral, dibujar un rectángulo if (minMaxLocResult.maxVal > threshold) { Imgproc.rectangle( imagenGrande, mejorCoincidencia, Point(mejorCoincidencia.x + imagenPequena.cols(), mejorCoincidencia.y + imagenPequena.rows()), Scalar(0.0, 0.0, 255.0), 2 ) } // Mostrar la imagen resultante con la coincidencia resaltada HighGui.imshow("Resultado", imagenGrande) HighGui.waitKey() } |