Об этом проекте
# 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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.