このプロジェクトについて

# 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