تتيح لك هذه المكتبة استخدام كاميرا الويب المدمجة أو الخارجية مباشرة من Java. لقد تم تصميمه لتجريد ميزات الكاميرا شائعة الاستخدام ودعم أطر الالتقاط المختلفة.
افترض موقفًا يعتمد فيه الكود الخاص بك على بعض إطارات الالتقاط، ولكن فجأة يتعين عليك إسقاطه واستخدام إطار مختلف، ربما أحدث (على سبيل المثال، استبدال JMF القديم بأحدث GStreamer). من خلال القيام بذلك، سيتعين عليك إعادة كتابة جزء كبير من التعليمات البرمجية الخاصة بك لأن هذه الأطر مختلفة تمامًا وغير متوافقة على الإطلاق. هذا هو المكان الذي تأتي فيه Webcam Capture API لإنقاذ العالم - فقد تم إنشاؤها لإزالة عبء مثل هذه المواقف حتى لا تضطر إلى إعادة كتابة التعليمات البرمجية الخاصة بك مرة أخرى، ولكن بدلاً من ذلك يمكنك ببساطة تبديل فئة برنامج التشغيل إلى فئة مختلفة.
أحدث إصدار مستقر هو: 0.3.12
أحدث إصدار تطويري هو: 0.3.13-SNAPSHOT
(وأجهزة ARM الأخرى)
الإصدار الأحدث (0.3.10) لا يعمل على ARM بمجرد إخراجه من الصندوق. لجعله يعمل، تحتاج إلى استبدال الإصدار 0.6.2 من BridJ JAR بـ 0.6.3-SNAPSHOT أو bridj-0.7-20140918 الأحدث. علاوة على ذلك، وجد جوناثان هير من فريق OpenIMAJ مؤخرًا مشكلة موصوفة في الجسر رقم 525 والتي تسبب مشكلات في بنية الذراع.
أحدث إصدار ثابت متاح في Maven Central:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.12</ version >
</ dependency >
نسخة لقطة:
< repository >
< id >Sonatype OSS Snapshot Repository</ id >
< url >http://oss.sonatype.org/content/repositories/snapshots</ url >
</ repository >
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.13-SNAPSHOT</ version >
</ dependency >
يمكن تنزيل أحدث إصدار ثابت على هيئة ملف ZIP ثنائي منفصل. يحتوي ملف ZIP هذا على Webcam Capture API نفسه وجميع التبعيات المطلوبة (في دليل libs
). اضغط على الرابط أدناه لتنزيله:
التقاط كاميرا الويب-0.3.12-dist.zip
يمكن تنزيل أحدث إصدار تطوير JAR (المعروف أيضًا باسم SNAPSHOT) هنا.
إذا كانت لديك إرادة قوية، أو وقت فراغ، أو معرفة، أو حتى مبلغ صغير من المال ترغب في إنفاقه لغرض جيد، فيمكنك المساعدة في تطوير Webcam Capture API الرائع هذا وجعله أفضل! هناك عدة أنواع من المساهمات موضع ترحيب كبير:
إذا كنت تعتقد أن هذا المشروع رائع، فأنت ترغب في المساعدة، لكنك لا تعرف كيف - يمكنك أن تصبح مراقب النجوم للمشروع. من خلال تمييزك بنجمة، فإنك تجعل المشروع أكثر شهرة. قم بزيارة هذا الرابط إذا كنت ترغب في معرفة المزيد حول كيفية عمل الإشعارات والنجوم على Github.
إذا وجدت خطأ ما أو توصلت إلى بعض الميزات الرائعة التي يمكن أن تجعل Webcam Capture واجهة برمجة تطبيقات أفضل للاستخدام، فلا تتردد في إنشاء مشكلة جديدة حيث يمكنك وصف المشكلة بالتفصيل أو ما هي المشكلة هل ترغب في تحسين.
نظرًا لأن Webcam Capture يستخدم جزءًا من التعليمات البرمجية الأصلية، فمن الصعب جدًا تغطية جميع أنظمة التشغيل المدعومة. أقوم دائمًا باختباره على أنظمة Ubuntu Linux وWindows XP وVista (كلاهما 32 بت) 64 بت، لكن ليس لدي إمكانية الاختبار على Raspberry Pi وMac OS و32 بت Linux. الرجاء المساعدة واختبار هذه الأنظمة إذا كان لديك مثل هذا الاحتمال.
إذا كنت تعرف Java أو C++، فيمكنك المساعدة في تطوير Webcam Capture عن طريق تفرع المستودع وإرسال طلبات السحب. يرجى زيارة هذا الرابط إذا كنت لا تعرف كيفية المساهمة في كود الآخرين على Github.
وقد أعرب الناس عن رغبتهم في التبرع بالقليل من المال. التبرع لن يجلب لك أي شيء خاص، بخلاف الشعور الدافئ في الداخل، وربما يحثني على إنتاج المزيد من المواد المتاحة مجانًا لمشروع Webcam Capture. يمكنك التبرع عبر PayPal، ما عليك سوى النقر على زر التبرع المتوفر أدناه - وسيعيد توجيهك إلى صفحة PayPal الآمنة حيث يمكنك تقديم مبلغ التبرع (ليس هناك حد أدنى للقيمة).
سوف يلتقط الكود أدناه الصورة من كاميرا الويب الافتراضية لديك ويحفظها في ملف hello-world.png
:
Webcam webcam = Webcam . getDefault ();
webcam . open ();
ImageIO . write ( webcam . getImage (), "PNG" , new File ( "hello-world.png" ));
فيما يلي الأمثلة الأساسية الرائعة التي توضح كيفية استخدام Webcam Capture API في كود Java. كل ذلك يمكن العثور عليه في الكود المصدري للمشروع. يرجى ملاحظة أن بعض هذه الأمثلة قد تستخدم أحدث واجهة برمجة تطبيقات والتي لم يتم إصدارها بعد إلى maven Central. في مثل هذه الحالة، يرجى التأكد من أنك تستخدم أحدث إصدار من Webcam Capture API SNAPSHOT.
WebcamPanel
WebcamPanel
WebcamImageTransformer
وإليك بعض الأمثلة الأكثر تقدمًا، والقليل منها يحتوي على واجهة مستخدم رسومية رائعة جدًا.
WebcamMotionDetector
مع نافذة JFrame
WebcamPanel.Painter
لرسم التأثيرات على مكون WebcamPanel
WebcamImageTransformer
لرسم التأثيرات مباشرة على الصورة من الكاميراسلسلة مقاطع فيديو من إنتاج برنامج "Genual Coder" للمبتدئين في التقاط كاميرا الويب:
تحدد Webcam Capture API واجهة WebcamDriver
التي تم تنفيذها بالفعل في العديد من برامج تشغيل الالتقاط المبنية على أطر العمل المعروفة المستخدمة للعمل مع الوسائط المتعددة والكاميرات. يمكن العثور على القائمة الكاملة أدناه.
بشكل افتراضي (إذا لم يتم تحديد برنامج تشغيل آخر) تستخدم المكتبة برنامج التشغيل الافتراضي الذي يتكون من جزء صغير ومكرر من إطار عمل OpenIMAJ الرائع المغلف في حاوية آمنة لمؤشر الترابط. ومع ذلك، هناك المزيد من برامج التشغيل الجاهزة للاستخدام والتي يمكن استخدامها كبديل أو إضافة إلى برنامج التشغيل الافتراضي. من خلال الاستفادة من برامج التشغيل هذه، يمكن توسيع Webcam Capture بميزات جديدة متنوعة (مثل دعم كاميرا IP).
تتضمن قائمة برامج تشغيل الالتقاط الإضافية ما يلي:
اسم السائق | مستقر | المركزية | وصف |
---|---|---|---|
ipcam | نعم | نعم | برنامج تشغيل كاميرا IP / الشبكة |
com.fswebcam | نعم | نعم | برنامج تشغيل أداة FSWebcam CLI |
com.gstreamer | نعم | نعم | برنامج تشغيل إطار عمل GStreamer |
com.openimaj | نعم | نعم | سائق لإطار OpenIMAJ |
v4l4j | نعم | لا | برنامج تشغيل مكتبة V4L4j |
jmf | نعم | نعم | برنامج تشغيل لأطر JMF / FMJ |
lti-civil | نعم | نعم | برنامج تشغيل مكتبة LTI-CIVIL |
vlcj | نعم | نعم | برنامج تشغيل مكتبة vlcj |
javacv | نعم | نعم | برنامج تشغيل مكتبة JavaCV |
ffmpeg-cli | poc | لا | برنامج تشغيل أداة FFmpeg CLI |
raspicam | poc | لا | برنامج تشغيل لأداة Raspicam CLI PIcam |
إذا لم يتم تحديد برنامج تشغيل آخر، فسيتم استخدام برنامج التشغيل الافتراضي. وهو يتألف من جزء صغير ومكرر من إطار عمل OpenIMAJ الرائع المغلف في حاوية آمنة للخيوط.
يوفر برنامج تشغيل الالتقاط هذا إمكانية الوصول إلى أجهزة كاميرا IP والتعامل مع الصور في شكل صور JPEG أو تدفقات MJPEG.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ipcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية الاستخدام:
Webcam . setDriver ( new IpCamDriver ());
يمكن العثور على مزيد من التفاصيل وتنزيل الثنائيات على صفحة webcam-capture-driver-ipcam المخصصة.
يوفر برنامج تشغيل الالتقاط هذا إمكانية استخدام أداة CLI تسمى fswebcam
(التي كتبها Philip Heron) للوصول إلى أجهزة UVC المتصلة بالكمبيوتر. إنه يعمل فقط على *nix ويتطلب تثبيت أداة على البيئة التي يتم فيها استخدام برنامج التشغيل.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-fswebcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية الاستخدام:
Webcam . setDriver ( new FsWebcamDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية الاستخدام وكيفية تثبيت fswebcam
وأين يمكن تنزيل الثنائيات، على صفحة webcam-capture-driver-fswebcam المخصصة.
يوفر برنامج تشغيل الالتقاط هذا إمكانية استخدام GStreamer للوصول إلى أجهزة كاميرا UVC المتصلة بالكمبيوتر. يعمل على نظامي التشغيل Windows و Linux فقط.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-gstreamer</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية الاستخدام:
Webcam . setDriver ( new GStreamerDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية الاستخدام وكيفية تثبيت GStreamer ومكان تنزيل الثنائيات، على صفحة webcam-capture-driver-gstreamer المخصصة.
يوفر برنامج تشغيل الالتقاط هذا إمكانية استخدام OpenIMAJ للوصول إلى أجهزة كاميرا UVC المتصلة بالكمبيوتر.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-openimaj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية الاستخدام:
Webcam . setDriver ( new OpenImajDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية استخدامه ومكان تنزيل الثنائيات على صفحة webcam-capture-driver-openimaj المخصصة.
هذا هو برنامج تشغيل الالتقاط الذي يستخدم مشروع V4L4j للوصول إلى أجهزة كاميرا UVC. إنه يعمل على Linux فقط ويبدو أنه مناسب للاستخدام على Raspberry Pi.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-v4l4j</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية الاستخدام:
Webcam . setDriver ( new V4l4jDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية استخدامه وحيثما أمكن تنزيل الثنائيات الضرورية، على صفحة webcam-capture-driver-v4l4j المخصصة.
هذا هو برنامج تشغيل الالتقاط الذي يستخدم JMF (Java Media Framework) للوصول إلى أجهزة كاميرا الويب UVC. يجب تثبيت JMF وتكوينه على جهاز الكمبيوتر قبل استخدام برنامج التشغيل هذا. ويمكن استخدامه أيضًا كبديل مع مشروع FMJ.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-jmf</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية الاستخدام:
Webcam . setDriver ( new JmfDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية استخدامه وتثبيته وتنزيل الثنائيات الضرورية، على صفحة webcam-capture-driver-jmf المخصصة.
هذا هو برنامج تشغيل الالتقاط المصمم للاستفادة من إمكانات مشروع LTI-CIVIL (بواسطة شركة Larson Technologies Inc.) واستخدامه للوصول إلى مجموعة واسعة من أجهزة UVC. يعمل على معماريات 32 بت فقط.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-lti-civil</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية استخدامه:
Webcam . setDriver ( new LtiCivilDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية استخدامه، وحيثما أمكن تنزيل الثنائيات الضرورية، على صفحة webcam-capture-driver-lti-civil المخصصة.
هذا هو برنامج تشغيل الالتقاط الذي يستخدم مكتبة VLCj من Caprica Software Limited للوصول إلى جهاز كاميرا UVC.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية استخدامه:
Webcam . setDriver ( new VlcjDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية استخدامه، وكيفية تثبيته، وحيث يمكن تنزيل الثنائيات الضرورية، على صفحة webcam-capture-driver-vlcj المخصصة.
هذا هو برنامج تشغيل الالتقاط الذي يستخدم ربط JavaCV لـ OpenCV للوصول إلى جهاز كاميرا UVC.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-opencv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
أو إذا كنت تستخدم webcam-capture < 0.3.12:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-javacv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
إذا كنت تستهدف منصات معينة فقط، فقم بإلقاء نظرة على تقليل عدد التبعيات.
كيفية استخدامه:
Webcam . setDriver ( new JavaCvDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية استخدامه، وكيفية تثبيته، وحيث يمكن تنزيل الثنائيات الضرورية، على صفحة webcam-capture-driver-javacv المخصصة.
هذا هو برنامج تشغيل الالتقاط الذي يستخدم أداة ffmpeg
CLI من FFmpeg للوصول إلى جهاز كاميرا UVC.
تبعية مافن:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ffmpeg-cli</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
كيفية استخدامه:
Webcam . setDriver ( new FFmpegCliDriver ());
يمكن العثور على مزيد من التفاصيل حول كيفية استخدامه، وكيفية تثبيته، وحيثما أمكن تنزيل الثنائيات الضرورية، على صفحة webcam-capture-driver-ffmpeg-cli المخصصة.
لقد بدأت في البداية العمل على Webcam Capture كإثبات بسيط للمفهوم بعد أن قرأت كتاب Andrew Davison الرائع بعنوان Killer Game Programming (والذي يتوفر أيضًا عبر الإنترنت). شكرا لك أندرو! اكتشفت لاحقًا أن هناك فوضى كاملة في واجهات برمجة تطبيقات Java مما يسمح لك بالتقاط الصور من كاميرات الويب. بمجرد اختيار واجهة برمجة تطبيقات معينة، لا يمكنك تغييرها دون تعديل أجزاء كبيرة من الكود. قررت تغيير هذا الوضع وكتابة غلاف للأغراض العامة لواجهات برمجة التطبيقات المختلفة (مثل JMF وOpenCV وOpenIMAJ وLTI-CIVIL وVLC). وبهذه الطريقة، تم إحياء برنامج Webcam Capture كما نعرفه اليوم. يمكنك اليوم تغيير الأطر الأساسية فقط عن طريق استبدال برنامج تشغيل كاميرا الويب (تغيير رمز سطر واحد). إذا لم يكن هناك محرك لإطار معين، فمن السهل جدًا كتابته بنفسك.
حقوق الطبع والنشر (C) 2012 - 2017 محفوظة لـ Bartosz Firyn (https://github.com/sarxos) والمساهمين
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.