عن المشروع
# 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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.