프로젝트 소개
# JavaCV
JavaCV는 JavaCPP Presets를 통해 OpenCV, FFmpeg, libdc1394, FlyCapture, Spinnaker, OpenKinect, librealsense, ARToolKitPlus, flandmark, Leptonica, Tesseract 등 인기 있는 컴퓨터 비전 및 멀티미디어 라이브러리를 Java와 Android에서 사용할 수 있도록 감싸고 있습니다.
## 주요 기능
- OpenCV 및 FFmpeg 바인딩을 통한 이미지와 비디오 로드 및 처리
- 웹캠, 카메라, 비디오 파일에서 프레임 캡처
- 파일에 비디오 출력 녹화
- Haar 캐스케이드를 통한 얼굴 감지, 컨투어 찾기, 기하학적 변환, 보정 유틸리티 제공
- `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+, OpenCL 및 OpenGL 지원을 위한 JOCL/JOGL
- 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가 필요합니다. JavaCPP, JavaCPP Presets, JavaCV 디렉토리에서 `mvn install`을 실행합니다. 스냅샷 빌드는 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.