عن المشروع

# 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' ``` لـ OpenCV المدعوم بـ GPU أو FFmpeg المرخص GPL، أضف `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