Pustaka ini memungkinkan Anda menggunakan webcam internal atau eksternal langsung dari Java. Ini dirancang untuk mengabstraksi fitur kamera yang umum digunakan dan mendukung berbagai kerangka pengambilan gambar.
Asumsikan situasi ketika kode Anda bergantung pada kerangka pengambilan tertentu, tetapi tiba-tiba Anda harus membuangnya dan menggunakan yang lain, mungkin yang lebih baru (misalnya, ganti JMF kuno dengan GStreamer terbaru). Dengan melakukan ini, Anda harus menulis ulang sebagian besar kode Anda karena kerangka kerja ini sangat berbeda dan tidak kompatibel sama sekali. Di sinilah Webcam Capture API hadir untuk menyelamatkan dunia - ini dibuat untuk menghilangkan beban situasi seperti itu sehingga Anda tidak perlu menulis ulang kode lagi, namun Anda cukup mengganti kelas driver ke kelas driver lain.
Versi stabil terbaru adalah: 0.3.12
Versi pengembangan terbaru adalah: 0.3.13-SNAPSHOT
(dan perangkat ARM lainnya)
Versi terbaru (0.3.10) tidak berfungsi pada ARM begitu saja. Untuk membuatnya berfungsi, Anda perlu mengganti BridJ JAR versi 0.6.2 dengan 0.6.3-SNAPSHOT atau bridj-0.7-20140918 yang lebih baru. Terlebih lagi, baru-baru ini Jonathon Hare dari tim OpenIMAJ menemukan masalah yang dijelaskan pada bridj #525 yang menyebabkan masalah pada arsitektur armhf.
Versi stabil terbaru tersedia di Maven Central:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.12</ version >
</ dependency >
Versi cuplikan:
< 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 >
Versi stabil terbaru dapat diunduh sebagai biner ZIP terpisah. File ZIP ini berisi Webcam Capture API itu sendiri dan semua dependensi yang diperlukan (dalam direktori libs
). Klik tautan di bawah untuk mengunduhnya:
webcam-capture-0.3.12-dist.zip
JAR versi pengembangan terbaru (alias SNAPSHOT) dapat diunduh di sini.
Jika Anda memiliki kemauan yang kuat, waktu luang, pengetahuan atau bahkan sejumlah kecil uang yang ingin Anda keluarkan untuk tujuan baik, Anda dapat membantu mengembangkan API Pengambilan Webcam yang luar biasa ini dan menjadikannya lebih baik lagi! Beberapa jenis kontribusi sangat diharapkan:
Jika menurut Anda proyek ini hebat, Anda ingin membantu, tetapi Anda tidak tahu caranya - Anda bisa menjadi pengamat bintang proyek. Dengan membintangi, Anda membuat proyek menjadi lebih populer. Kunjungi tautan ini jika Anda ingin mempelajari lebih lanjut tentang cara kerja notifikasi dan bintang di Github.
Jika Anda menemukan bug atau Anda menemukan beberapa fitur luar biasa yang dapat menjadikan Webcam Capture API yang lebih baik untuk digunakan, jangan ragu untuk membuat terbitan baru di mana Anda dapat menjelaskan secara detail apa masalahnya, atau apa apakah Anda ingin meningkatkannya.
Karena Webcam Capture menggunakan beberapa bagian kode asli, sangat sulit untuk mencakup semua sistem operasi yang didukung. Saya selalu mengujinya pada Ubuntu Linux 64-bit, Windows XP dan Vista (keduanya 32-bit), tetapi saya tidak memiliki kemungkinan untuk mengujinya pada Raspberry Pi, Mac OS dan Linux 32-bit. Tolong bantu dan uji sistem tersebut jika Anda memiliki kemungkinan seperti itu.
Jika Anda mengetahui Java atau C++, Anda dapat membantu mengembangkan Webcam Capture dengan melakukan forking repositori dan mengirimkan permintaan tarik. Silakan kunjungi tautan ini jika Anda tidak tahu cara berkontribusi pada kode orang lain di Github.
Orang-orang telah menyatakan keinginannya untuk menyumbangkan sedikit uang. Berdonasi tidak akan memberi Anda sesuatu yang istimewa, selain perasaan hangat di dalam hati, dan mungkin mendorong saya untuk memproduksi lebih banyak materi yang tersedia secara bebas untuk proyek Webcam Capture. Anda dapat berdonasi melalui PayPal, cukup klik tombol donasi yang tersedia di bawah - ini akan mengarahkan Anda ke halaman PayPal aman di mana Anda dapat memberikan jumlah donasi (tidak ada nilai minimal).
Kode di bawah ini akan mengambil gambar dari webcam default Anda dan menyimpannya dalam file hello-world.png
:
Webcam webcam = Webcam . getDefault ();
webcam . open ();
ImageIO . write ( webcam . getImage (), "PNG" , new File ( "hello-world.png" ));
Di bawah ini adalah contoh dasar yang menunjukkan bagaimana Webcam Capture API dapat digunakan dalam kode Java. Semua dapat ditemukan di kode sumber proyek. Harap dicatat bahwa beberapa contoh tersebut mungkin menggunakan API terbaru yang belum dirilis ke maven Central. Jika demikian, pastikan Anda menggunakan SNAPSHOT API Capture Webcam terbaru.
WebcamPanel
WebcamPanel
WebcamImageTransformer
Dan berikut adalah beberapa contoh tingkat lanjut, hanya sedikit dengan GUI yang cukup mewah.
WebcamMotionDetector
dengan jendela JFrame
WebcamPanel.Painter
untuk menggambar efek pada komponen WebcamPanel
WebcamImageTransformer
untuk menggambar efek langsung pada gambar dari kameraSeri video oleh Koder Asli untuk pemula Pengambilan Webcam:
Webcam Capture API mendefinisikan antarmuka WebcamDriver
yang telah diimplementasikan di beberapa driver capture yang dibangun di atas kerangka kerja terkenal yang digunakan untuk bekerja dengan multimedia dan kamera. Daftar lengkap dapat ditemukan di bawah.
Secara default (jika driver lain tidak ditentukan) perpustakaan menggunakan driver default yang terdiri dari bagian kecil dan halus dari kerangka OpenIMAJ mengagumkan yang dibungkus dalam wadah thread-safe. Namun masih ada lagi driver siap pakai yang bisa digunakan sebagai pengganti atau tambahan driver bawaan. Dengan memanfaatkan driver tersebut, Webcam Capture dapat diperluas dengan berbagai fitur baru (misalnya dukungan kamera IP).
Daftar driver penangkapan tambahan meliputi:
Nama Pengemudi | Stabil | Pusat | Keterangan |
---|---|---|---|
ipcam | Ya | Ya | Driver untuk kamera IP / jaringan |
fswebcam | Ya | Ya | Driver untuk alat FFSWebcam CLI |
gstreamer | Ya | Ya | Driver untuk kerangka GStreamer |
openimaj | Ya | Ya | Driver untuk kerangka OpenIMAJ |
v4l4j | Ya | TIDAK | Driver untuk perpustakaan V4L4j |
jmf | Ya | Ya | Driver untuk kerangka JMF / FMJ |
lti-sipil | Ya | Ya | Driver untuk perpustakaan LTI-CIVIL |
vlcj | Ya | Ya | Driver untuk perpustakaan vlcj |
javacv | Ya | Ya | Driver untuk perpustakaan JavaCV |
ffmpeg-cli | poc | TIDAK | Driver untuk alat FFmpeg CLI |
raspicam | poc | TIDAK | Driver untuk alat Raspicam CLI PIcam |
Jika tidak ada driver lain yang ditentukan, driver default akan digunakan. Ini terdiri dari bagian kecil dan halus dari kerangka OpenIMAJ mengagumkan yang dibungkus dalam wadah yang aman untuk thread.
Driver pengambilan ini memberikan kemungkinan untuk mengakses perangkat kamera IP dan menangani gambar dalam bentuk gambar JPEG atau aliran MJPEG.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ipcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakan:
Webcam . setDriver ( new IpCamDriver ());
Detail lebih lanjut dan pengunduhan binari dapat ditemukan di halaman webcam-capture-driver-ipcam khusus.
Driver capture ini memberikan kemungkinan untuk menggunakan alat CLI yang disebut fswebcam
(ditulis oleh Philip Heron) untuk mengakses perangkat UVC yang terhubung ke komputer. Ini hanya berfungsi pada *nix dan memerlukan alat untuk diinstal pada lingkungan di mana driver digunakan.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-fswebcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakan:
Webcam . setDriver ( new FsWebcamDriver ());
Rincian lebih lanjut tentang cara menggunakan, cara menginstal fswebcam
dan di mana binari dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-fswebcam.
Driver penangkapan ini memberikan kemungkinan untuk menggunakan GStreamer untuk mengakses perangkat kamera UVC yang terhubung ke komputer. Ini hanya berfungsi di Windows dan Linux.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-gstreamer</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakan:
Webcam . setDriver ( new GStreamerDriver ());
Detail lebih lanjut tentang cara menggunakan, cara menginstal GStreamer, dan di mana biner dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-gstreamer.
Driver capture ini memberikan kemungkinan untuk menggunakan OpenIMAJ untuk mengakses perangkat kamera UVC yang terhubung ke komputer.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-openimaj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakan:
Webcam . setDriver ( new OpenImajDriver ());
Detail lebih lanjut tentang cara menggunakannya dan di mana binari dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-openimaj.
Ini adalah capture driver yang menggunakan proyek V4L4j untuk mengakses perangkat kamera UVC. Ini hanya berfungsi di Linux dan sepertinya paling cocok untuk digunakan di Raspberry Pi.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-v4l4j</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakan:
Webcam . setDriver ( new V4l4jDriver ());
Detail lebih lanjut tentang cara menggunakannya dan di mana biner yang diperlukan dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-v4l4j.
Ini adalah driver capture yang menggunakan JMF (Java Media Framework) untuk mengakses perangkat webcam UVC. JMF perlu diinstal dan dikonfigurasi pada PC sebelum driver ini dapat digunakan. Ini juga dapat digunakan sebagai alternatif dengan proyek FMJ.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-jmf</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakan:
Webcam . setDriver ( new JmfDriver ());
Detail lebih lanjut tentang cara menggunakannya, menginstal, dan jika biner diperlukan dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-jmf.
Ini adalah driver penangkapan yang dirancang untuk memanfaatkan kemampuan proyek LTI-CIVIL (oleh Larson Technologies Inc.) dan menggunakannya untuk mengakses berbagai perangkat UVC. Ini hanya berfungsi pada arsitektur 32-bit.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-lti-civil</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakannya:
Webcam . setDriver ( new LtiCivilDriver ());
Rincian lebih lanjut tentang cara menggunakannya, dan jika biner diperlukan dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-lti-civil.
Ini adalah driver pengambilan yang menggunakan perpustakaan VLCj dari Caprica Software Limited untuk mendapatkan akses ke perangkat kamera UVC.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakannya:
Webcam . setDriver ( new VlcjDriver ());
Detail lebih lanjut tentang cara menggunakannya, cara menginstal, dan jika biner diperlukan dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-vlcj.
Ini adalah driver pengambilan yang menggunakan pengikatan JavaCV untuk OpenCV untuk mendapatkan akses ke perangkat kamera UVC.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-opencv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
atau jika Anda menggunakan webcam-capture <0.3.12:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-javacv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Jika Anda hanya menargetkan platform tertentu, lihat Mengurangi Jumlah Ketergantungan.
Cara menggunakannya:
Webcam . setDriver ( new JavaCvDriver ());
Rincian lebih lanjut tentang cara menggunakannya, cara menginstal, dan jika biner diperlukan dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-javacv.
Ini adalah driver capture yang menggunakan alat ffmpeg
CLI dari FFmpeg untuk mengakses perangkat kamera UVC.
Ketergantungan Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ffmpeg-cli</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cara menggunakannya:
Webcam . setDriver ( new FFmpegCliDriver ());
Detail lebih lanjut tentang cara menggunakannya, cara menginstal, dan jika biner diperlukan dapat diunduh, dapat ditemukan di halaman khusus webcam-capture-driver-ffmpeg-cli.
Saya awalnya mulai mengerjakan Webcam Capture sebagai bukti konsep sederhana setelah saya membaca buku fantastis Andrew Davison berjudul Killer Game Programming (yang juga tersedia online). Terima kasih Andrew! Belakangan saya menemukan ada kekacauan total di Java API yang memungkinkan Anda mengambil gambar dari webcam. Setelah Anda memilih API tertentu, Anda tidak dapat mengubahnya tanpa mengubah sebagian besar kode. Saya memutuskan untuk mengubah situasi ini dan menulis pembungkus tujuan umum untuk berbagai API berbeda (seperti JMF, OpenCV, OpenIMAJ, LTI-CIVIL, VLC). Sedemikian rupa, Webcam Capture seperti yang kita kenal sekarang, dihidupkan. Saat ini Anda dapat mengubah kerangka kerja yang mendasarinya hanya dengan mengganti driver webcam (perubahan kode satu baris). Jika tidak ada driver untuk framework tertentu, sangat mudah untuk menulisnya sendiri.
Hak Cipta (C) 2012 - 2017 Bartosz Firyn (https://github.com/sarxos) dan kontributor
Izin dengan ini diberikan, secara gratis, kepada siapa pun yang memperoleh salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menggunakan Perangkat Lunak tanpa batasan, termasuk namun tidak terbatas pada hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , mempublikasikan, mendistribusikan, mensublisensikan, dan/atau menjual salinan Perangkat Lunak, dan mengizinkan orang yang menerima Perangkat Lunak untuk melakukan hal tersebut, dengan tunduk pada ketentuan berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini akan disertakan dalam semua salinan atau sebagian besar Perangkat Lunak.
PERANGKAT LUNAK INI DISEDIAKAN "APA ADANYA", TANPA JAMINAN APA PUN, TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN KELAYAKAN UNTUK DIPERDAGANGKAN, KESESUAIAN UNTUK TUJUAN TERTENTU, DAN TIDAK ADA PELANGGARAN. DALAM KEADAAN APA PUN PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU TANGGUNG JAWAB LAINNYA, BAIK DALAM TINDAKAN KONTRAK, HUKUM ATAU LAINNYA, YANG TIMBUL DARI, ATAU SEHUBUNGAN DENGAN PERANGKAT LUNAK ATAU PENGGUNAAN ATAU HAL-HAL LAIN DALAM PERANGKAT LUNAK.