Sobre el proyecto

# JavaCV JavaCV envuelve bibliotecas populares de visión por computadora y multimedia —OpenCV, FFmpeg, libdc1394, FlyCapture, Spinnaker, OpenKinect, librealsense, ARToolKitPlus, flandmark, Leptonica y Tesseract— a través de JavaCPP Presets, haciéndolas accesibles desde Java y Android. ## Qué hace - Carga y procesa imágenes y video mediante bindings de OpenCV y FFmpeg - Captura fotogramas de webcams, cámaras y archivos de video - Graba salida de video a archivos - Proporciona detección facial con cascadas Haar, búsqueda de contornos, transformación geométrica y utilidades de calibración - Visualización de imágenes a pantalla completa acelerada por hardware mediante `CanvasFrame` / `GLCanvasFrame` - Helpers de ejecución paralela y acceso directo a memoria nativa mediante buffers NIO ## Clases clave - `FrameGrabber` / `FrameRecorder` — interfaces abstractas para captura y grabación; las implementaciones concretas incluyen `OpenCVFrameGrabber`, `FFmpegFrameGrabber`, `OpenCVFrameRecorder`, `FFmpegFrameRecorder` - `OpenCVFrameConverter` / `Java2DFrameConverter` — convierten entre `Mat`/`IplImage` de OpenCV, `BufferedImage` de Java, `Bitmap` de Android y `Frame` - `CascadeClassifier` — cargado desde archivos XML para detección de objetos/rostros - `CanvasFrame` / `GLCanvasFrame` — ventanas de visualización con modo pantalla completa opcional - `Parallel` — ejecuta tareas en múltiples núcleos - `GeometricCalibrator` / `ProCamGeometricCalibrator` — calibración de cámara y proyector ## Instalación Agrega el BOM de la plataforma a tu construcción. Maven: ```xml <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.5.14</version> </dependency> ``` Gradle: ```groovy implementation 'org.bytedeco:javacv-platform:1.5.14' ``` Para construcciones de OpenCV con aceleración GPU o FFmpeg con licencia GPL, agrega `opencv-platform-gpu` o `ffmpeg-platform-gpl` respectivamente. Los binarios cubren Android, iOS, Linux, macOS y Windows. ## Requisitos - Java SE 8 o superior - Compilador C++ (para construir desde el código fuente) - Opcional: Android SDK API 24+, JOCL/JOGL para soporte de OpenCL y OpenGL - Coincide los artefactos de 32 y 64 bits; no se pueden mezclar ## Ejemplo: detección facial desde una webcam ```java import org.bytedeco.javacv.*; import org.bytedeco.opencv.opencv_core.*; import org.bytedeco.opencv.opencv_objdetect.*; import static org.bytedeco.opencv.global.opencv_core.*; import static org.bytedeco.opencv.global.opencv_imgproc.*; import static org.bytedeco.opencv.global.opencv_objdetect.*; public class FaceDetect { public static void main(String[] args) throws Exception { FrameGrabber grabber = FrameGrabber.createDefault(0); grabber.start(); CascadeClassifier classifier = new CascadeClassifier( "haarcascade_frontalface_alt.xml"); OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat(); CanvasFrame frame = new CanvasFrame("Detección de Rostros"); Mat gray = new Mat(); while (frame.isVisible() && (grabbed = converter.convert(grabber.grab())) != null) { cvtColor(grabbed, gray, COLOR_BGR2GRAY); RectVector faces = new RectVector(); classifier.detectMultiScale(gray, faces); for (int i = 0; i < faces.size(); i++) { Rect r = faces.get(i); rectangle(grabbed, new Point(r.x(), r.y()), new Point(r.x() + r.width(), r.y() + r.height()), new Scalar(0, 255, 0)); } frame.showImage(grabbed); } frame.dispose(); grabber.stop(); } } ``` ## Construir desde el código fuente Requiere Maven 3.x y JavaCPP 1.5.14. Ejecuta `mvn install` en los directorios de JavaCPP, JavaCPP Presets y JavaCV. Las versiones snapshot también están disponibles en http://bytedeco.org/builds/. ## Enlaces - Repositorio: https://github.com/bytedeco/javacv - Lista de correo: http://groups.google.com/group/javacv - Discusión: https://github.com/bytedeco/javacv/discussions