このプロジェクトについて
# JavaCV
JavaCVは、人気のあるコンピュータビジョンおよびマルチメディアライブラリ——OpenCV、FFmpeg、libdc1394、FlyCapture、Spinnaker、OpenKinect、librealsense、ARToolKitPlus、flandmark、Leptonica、Tesseract——をJavaCPP Presetsを通じてラップし、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以上、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が必要です。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.