Об этом проекте

# JavaCV JavaCV оборачивает популярные библиотеки компьютерного зрения и мультимедиа — OpenCV, FFmpeg, libdc1394, FlyCapture, Spinnaker, OpenKinect, librealsense, ARToolKitPlus, flandmark, Leptonica и Tesseract — через JavaCPP Presets, делая их доступными из Java и Android. ## Что он делает - Загрузка и обработка изображений и видео через привязки OpenCV и FFmpeg - Захват кадров с веб-камер, камер и видеофайлов - Запись видео в файлы - Обнаружение лиц с помощью каскадов Хаара, поиск контуров, геометрические преобразования и утилиты калибровки - Аппародно ускоренное полноэкранное отображение изображений через `CanvasFrame` / `GLCanvasFrame` - Вспомогательные средства параллельного выполнения и прямой доступ к нативной памяти через NIO-буферы ## Ключевые классы - `FrameGrabber` / `FrameRecorder` — абстрактные интерфейсы для захвата и записи; конкретные реализации включают `OpenCVFrameGrabber`, `FFmpegFrameGrabber`, `OpenCVFrameRecorder`, `FFmpegFrameRecorder` - `OpenCVFrameConverter` / `Java2DFrameConverter` — преобразование между OpenCV `Mat`/`IplImage`, Java `BufferedImage`, Android `Bitmap` и `Frame` - `CascadeClassifier` — загружается из XML-файлов для обнаружения объектов/лиц - `CanvasFrame` / `GLCanvasFrame` — окна отображения с опциональным полноэкранным режимом - `Parallel` — выполнение задач на нескольких ядрах - `GeometricCalibrator` / `ProCamGeometricCalibrator` — калибровка камер и проекторов ## Установка Добавьте платформенный BOM в сборку. 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' ``` Для GPU-ускоренного OpenCV или GPL-лицензированных сборок FFmpeg добавьте `opencv-platform-gpu` или `ffmpeg-platform-gpl` соответственно. Бинарные файлы поддерживают Android, iOS, Linux, macOS и Windows. ## Требования - Java SE 8 или новее - C++ компилятор (для сборки из исходников) - Опционально: Android SDK API 24+, JOCL/JOGL для поддержки OpenCL и OpenGL - Совпадение артефактов 32- и 64-бит; их нельзя смешивать ## Пример: обнаружение лиц с веб-камеры ```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("Face Detection"); 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(); } } ``` ## Сборка из исходников Требуется Maven 3.x и JavaCPP 1.5.14. Запустите `mvn install` в директориях JavaCPP, JavaCPP Presets и JavaCV. Сборки snapshot также доступны на http://bytedeco.org/builds/. ## Ссылки - Репозиторий: https://github.com/bytedeco/javacv - Список рассылки: http://groups.google.com/group/javacv - Обсуждения: https://github.com/bytedeco/javacv/discussions