ไลบรารีนี้อนุญาตให้คุณใช้เว็บแคมในตัวหรือภายนอกได้โดยตรงจาก 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 นอกจากนี้ ล่าสุด Jonathon Hare จากทีม OpenIMAJ พบปัญหาที่อธิบายไว้ใน bridj #525 ซึ่งทำให้เกิดปัญหากับสถาปัตยกรรม armhf
เวอร์ชันเสถียรล่าสุดมีอยู่ใน 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 binary ที่แยกจากกัน ไฟล์ ZIP นี้มี Webcam Capture API และการอ้างอิงที่จำเป็นทั้งหมด (ในไดเรกทอรี libs
) คลิกที่ลิงค์ด้านล่างเพื่อดาวน์โหลด:
เว็บแคมจับภาพ-0.3.12-dist.zip
สามารถดาวน์โหลด JAR เวอร์ชันพัฒนาล่าสุด (หรือที่เรียกว่า SNAPSHOT) ได้ที่นี่
หากคุณมีความตั้งใจที่แรงกล้า เวลาว่าง ความรู้ หรือแม้แต่เงินจำนวนเล็กน้อยที่คุณต้องการใช้จ่ายเพื่อวัตถุประสงค์ที่ดี คุณสามารถช่วยพัฒนา Webcam Capture API ที่ยอดเยี่ยมนี้และทำให้ดียิ่งขึ้นไปอีก! ยินดีอย่างยิ่งที่จะมีส่วนร่วมหลายประเภท:
หากคุณคิดว่าโครงการนี้ยอดเยี่ยม คุณอยากช่วย แต่คุณไม่รู้ว่าต้องทำอย่างไร - คุณสามารถเป็นผู้ดูดาวของโครงการได้ การแสดงนำคุณกำลังทำให้โปรเจ็กต์ได้รับความนิยมมากขึ้น ไปที่ลิงก์นี้หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของการแจ้งเตือนและดาวบน Github
หากคุณพบจุดบกพร่องหรือคุณพบคุณลักษณะที่ยอดเยี่ยมซึ่งสามารถทำให้ Webcam Capture เป็น API ที่ดีขึ้น อย่าลังเลที่จะสร้างปัญหาใหม่ที่คุณสามารถอธิบายรายละเอียดว่าปัญหาคืออะไร หรืออะไร คุณต้องการปรับปรุง
เนื่องจาก Webcam Capture ใช้โค้ดเนทิฟบางส่วน จึงเป็นเรื่องยากมากที่จะครอบคลุมระบบปฏิบัติการที่รองรับทั้งหมด ฉันทดสอบบน Ubuntu Linux, Windows XP และ Vista เวอร์ชัน 64 บิตอยู่เสมอ (ทั้ง 32 บิต) แต่ฉันไม่สามารถทดสอบบน Raspberry Pi, Mac OS และ Linux 32 บิตได้ โปรดช่วยเหลือและทดสอบระบบเหล่านั้นหากคุณมีโอกาสดังกล่าว
หากคุณรู้จัก 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 ทั้งหมดสามารถพบได้ในซอร์สโค้ดของโครงการ โปรดทราบว่าตัวอย่างบางส่วนอาจใช้ API ใหม่ล่าสุดซึ่งยังไม่ได้เผยแพร่ไปยัง maven Central ในกรณีเช่นนี้ โปรดตรวจสอบให้แน่ใจว่าคุณใช้ Webcam Capture API SNAPSHOT ใหม่ล่าสุด
WebcamPanel
WebcamPanel
WebcamImageTransformer
และนี่คือตัวอย่างบางส่วนที่มี GUI ที่ค่อนข้างหรูหรา
WebcamMotionDetector
กับหน้าต่าง JFrame
WebcamPanel.Painter
เพื่อวาดเอฟเฟกต์บนส่วนประกอบ WebcamPanel
WebcamImageTransformer
เพื่อวาดเอฟเฟกต์โดยตรงจากกล้องบนภาพซีรีส์วิดีโอโดย Coder ของแท้สำหรับผู้เริ่มต้นจับภาพเว็บแคม:
Webcam Capture API กำหนดอินเทอร์เฟซ WebcamDriver
ซึ่งได้รับการปรับใช้แล้วใน ไดรเวอร์จับภาพ หลายตัวที่สร้างบนเฟรมเวิร์กที่รู้จักกันดีที่ใช้ในการทำงานกับมัลติมีเดียและกล้อง รายการทั้งหมดสามารถพบได้ด้านล่าง
ตามค่าเริ่มต้น (หากไม่ได้ระบุไดรเวอร์อื่น) ไลบรารีจะใช้ ไดรเวอร์เริ่มต้น ซึ่งประกอบด้วยส่วนเล็ก ๆ ที่ได้รับการปรับปรุงของเฟรมเวิร์ก OpenIMAJ ที่ยอดเยี่ยมซึ่งรวมอยู่ในคอนเทนเนอร์ที่ปลอดภัยสำหรับเธรด อย่างไรก็ตาม มีไดรเวอร์ที่พร้อมใช้งานเพิ่มเติมซึ่งสามารถใช้แทนหรือเพิ่มไดรเวอร์เริ่มต้นได้ ด้วยการใช้ไดรเวอร์เหล่านั้น Webcam Capture สามารถขยายด้วยคุณสมบัติใหม่ๆ มากมาย (เช่น รองรับกล้อง IP)
รายการไดร์เวอร์จับภาพเพิ่มเติมประกอบด้วย:
ชื่อคนขับ | มั่นคง | เซ็นทรัล | คำอธิบาย |
---|---|---|---|
ไอพีแคม | ใช่ | ใช่ | ไดร์เวอร์สำหรับกล้อง IP / เครือข่าย |
fsเว็บแคม | ใช่ | ใช่ | ไดร์เวอร์สำหรับเครื่องมือ FSWebcam CLI |
gstreamer | ใช่ | ใช่ | ไดรเวอร์สำหรับกรอบงาน GStreamer |
เปิดมาจ | ใช่ | ใช่ | ไดรเวอร์สำหรับกรอบงาน OpenIMAJ |
v4l4j | ใช่ | เลขที่ | ไดรเวอร์สำหรับไลบรารี V4L4j |
เจเอ็มเอฟ | ใช่ | ใช่ | ไดรเวอร์สำหรับกรอบงาน JMF / FMJ |
lti-โยธา | ใช่ | ใช่ | ไดร์เวอร์สำหรับห้องสมุด LTI-CIVIL |
vlcj | ใช่ | ใช่ | ไดร์เวอร์สำหรับไลบรารี vlcj |
javacv | ใช่ | ใช่ | ไดรเวอร์สำหรับไลบรารี JavaCV |
ffmpeg-cli | โพส | เลขที่ | ไดร์เวอร์สำหรับเครื่องมือ FFmpeg CLI |
ราสปิแคม | โพส | เลขที่ | ไดร์เวอร์สำหรับเครื่องมือ Raspicam CLI PIcam |
หากไม่มีการระบุไดรเวอร์อื่น ระบบจะใช้ไดรเวอร์เริ่มต้น ประกอบด้วยส่วนเล็กๆ ที่ได้รับการขัดเกลาของเฟรมเวิร์ก OpenIMAJ ที่ยอดเยี่ยมซึ่งห่อหุ้มอยู่ในคอนเทนเนอร์ที่ปลอดภัยสำหรับเธรด
ไดรเวอร์จับภาพนี้ให้ความเป็นไปได้ในการเข้าถึงอุปกรณ์กล้อง IP และจัดการภาพในรูปแบบภาพ JPEG หรือสตรีม MJPEG
การพึ่งพา Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ipcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
วิธีใช้:
Webcam . setDriver ( new IpCamDriver ());
รายละเอียดเพิ่มเติมและการดาวน์โหลดไบนารีสามารถพบได้ในหน้าเฉพาะของเว็บแคม-แคปเจอร์-ไดรเวอร์-ไอพีแคม
ไดรเวอร์จับภาพนี้ให้ความเป็นไปได้ในการใช้เครื่องมือ CLI ที่เรียกว่า fswebcam
(เขียนโดย Philip Heron) เพื่อเข้าถึงอุปกรณ์ UVC ที่เชื่อมต่อกับคอมพิวเตอร์ ใช้งานได้กับ *nix เท่านั้น และจำเป็นต้องติดตั้งเครื่องมือบนสภาพแวดล้อมที่ใช้ไดรเวอร์
การพึ่งพา Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-fswebcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
วิธีใช้:
Webcam . setDriver ( new FsWebcamDriver ());
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน วิธีการติดตั้ง fswebcam
และตำแหน่งที่สามารถดาวน์โหลดไบนารี่ได้ในหน้าเฉพาะของเว็บแคม-จับภาพ-ไดรเวอร์-fswebcam
ไดรเวอร์จับภาพนี้ให้ความเป็นไปได้ในการใช้ GStreamer เพื่อเข้าถึงอุปกรณ์กล้อง UVC ที่เชื่อมต่อกับคอมพิวเตอร์ ใช้งานได้บน Windows และ Linux เท่านั้น
การพึ่งพา Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-gstreamer</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
วิธีใช้:
Webcam . setDriver ( new GStreamerDriver ());
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน วิธีการติดตั้ง GStreamer และตำแหน่งที่สามารถดาวน์โหลดไบนารีได้ในหน้าเฉพาะของเว็บแคม-จับภาพ-ไดรเวอร์-gstreamer
ไดรเวอร์จับภาพนี้ให้ความเป็นไปได้ในการใช้ OpenIMAJ เพื่อเข้าถึงอุปกรณ์กล้อง UVC ที่เชื่อมต่อกับคอมพิวเตอร์
การพึ่งพา Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-openimaj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
วิธีใช้:
Webcam . setDriver ( new OpenImajDriver ());
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้งานและตำแหน่งที่สามารถดาวน์โหลดไบนารี่ได้ในหน้าเฉพาะของเว็บแคม-แคปเจอร์-ไดร์เวอร์-openimaj
นี่คือไดรเวอร์จับภาพซึ่งใช้โปรเจ็กต์ V4L4j เพื่อเข้าถึงอุปกรณ์กล้อง UVC ใช้งานได้บน Linux เท่านั้นและดูเหมือนว่าจะเหมาะที่สุดสำหรับใช้กับ Raspberry Pi
การพึ่งพา Maven:
< 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 ได้อีกด้วย
การพึ่งพา Maven:
< 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 บิตเท่านั้น
การพึ่งพา Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-lti-civil</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
วิธีใช้:
Webcam . setDriver ( new LtiCivilDriver ());
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน และตำแหน่งที่สามารถดาวน์โหลดไบนารี่ที่จำเป็นได้ในหน้าเฉพาะของเว็บแคม-จับภาพ-ไดรเวอร์-lti-พลเรือน
นี่คือไดรเวอร์จับภาพซึ่งใช้ไลบรารี VLCj จาก Caprica Software Limited เพื่อเข้าถึงอุปกรณ์กล้อง UVC
การพึ่งพา Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
วิธีใช้:
Webcam . setDriver ( new VlcjDriver ());
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน วิธีการติดตั้ง และตำแหน่งที่สามารถดาวน์โหลดไบนารี่ที่จำเป็นได้ในหน้าเฉพาะของเว็บแคม-จับภาพ-ไดรเวอร์-vlcj
นี่คือไดรเวอร์จับภาพซึ่งใช้การรวม JavaCV สำหรับ OpenCV เพื่อเข้าถึงอุปกรณ์กล้อง UVC
การพึ่งพา Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-opencv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
หรือหากคุณใช้การจับภาพเว็บแคม < 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 ());
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน วิธีการติดตั้ง และตำแหน่งที่สามารถดาวน์โหลดไบนารี่ที่จำเป็นได้ในหน้าเฉพาะของเว็บแคม-แคปเจอร์-ไดร์เวอร์-javacv
นี่คือไดรเวอร์จับภาพซึ่งใช้เครื่องมือ ffmpeg
CLI จาก FFmpeg เพื่อเข้าถึงอุปกรณ์กล้อง UVC
การพึ่งพา Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ffmpeg-cli</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
วิธีใช้:
Webcam . setDriver ( new FFmpegCliDriver ());
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้งาน วิธีการติดตั้ง และตำแหน่งที่สามารถดาวน์โหลดไบนารี่ที่จำเป็นได้ในหน้าเฉพาะของเว็บแคม-จับภาพ-ไดรเวอร์-ffmpeg-cli
ในตอนแรกฉันเริ่มทำงานกับ Webcam Capture เพื่อเป็นการพิสูจน์แนวคิดง่ายๆ หลังจากที่ฉันได้อ่านหนังสือที่ยอดเยี่ยมของ Andrew Davison ชื่อ Killer Game Programming (ซึ่งมีเผยแพร่ทางออนไลน์ด้วย) ขอบคุณแอนดรูว์! ต่อมาฉันพบว่า Java API มีความยุ่งเหยิงโดยสิ้นเชิงซึ่งทำให้คุณสามารถจับภาพจากเว็บแคมได้ เมื่อคุณเลือก API เฉพาะเจาะจงแล้ว คุณไม่สามารถเปลี่ยนแปลงได้โดยไม่ต้องแก้ไขโค้ดส่วนใหญ่ ฉันตัดสินใจเปลี่ยนสถานการณ์นี้และเขียน Wrapper สำหรับวัตถุประสงค์ทั่วไปสำหรับ API ต่างๆ (เช่น JMF, OpenCV, OpenIMAJ, LTI-CIVIL, VLC) ด้วยวิธีนี้ Webcam Capture ที่เรารู้จักในปัจจุบันจึงถูกทำให้เป็นจริงขึ้นมา วันนี้คุณสามารถเปลี่ยนเฟรมเวิร์กพื้นฐานได้เพียงแค่เปลี่ยนไดรเวอร์เว็บแคม (เปลี่ยนโค้ดหนึ่งบรรทัด) หากไม่มีไดรเวอร์สำหรับเฟรมเวิร์กเฉพาะ การเขียนด้วยตัวเองเป็นเรื่องง่ายมาก
ลิขสิทธิ์ (C) 2012 - 2017 Bartosz Firyn (https://github.com/sarxos) และผู้มีส่วนร่วม
อนุญาตให้บุคคลใดก็ตามที่ได้รับสำเนาของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") อนุญาตโดยไม่เสียค่าใช้จ่าย เพื่อจัดการกับซอฟต์แวร์โดยไม่มีข้อจำกัด รวมถึงแต่ไม่จำกัดเพียงสิทธิ์ในการใช้ คัดลอก ปรับเปลี่ยน ผสาน เผยแพร่ แจกจ่าย ให้อนุญาตช่วง และ/หรือขายสำเนาของซอฟต์แวร์ และอนุญาตให้บุคคลที่ได้รับซอฟต์แวร์นี้สามารถทำได้ ภายใต้เงื่อนไขต่อไปนี้:
ประกาศเกี่ยวกับลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์นี้มีให้ "ตามที่เป็น" โดยไม่มีการรับประกันใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันความสามารถในการค้าขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิด ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดต่อการเรียกร้องค่าเสียหายหรือความรับผิดอื่นใดไม่ว่าในการกระทำของสัญญาการละเมิดหรืออย่างอื่นที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือข้อตกลงอื่น ๆ ใน ซอฟต์แวร์.