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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.