이 라이브러리를 사용하면 Java에서 직접 내장 웹캠이나 외부 웹캠을 사용할 수 있습니다. 일반적으로 사용되는 카메라 기능을 추상화하고 다양한 캡처 프레임워크를 지원하도록 설계되었습니다.
코드가 일부 캡처 프레임워크에 의존하지만 갑자기 이를 삭제하고 다른, 아마도 새로운 코드를 사용해야 하는 상황을 가정해 보십시오(예: 구식 JMF를 최신 GStreamer로 교체). 이렇게 하면 이러한 프레임워크가 완전히 다르고 전혀 호환되지 않기 때문에 코드의 중요한 부분을 다시 작성해야 합니다. 세상을 구하기 위해 Webcam Capture API가 탄생한 곳입니다. 이러한 상황의 부담을 없애기 위해 만들어졌기 때문에 코드를 다시 작성할 필요가 없고 대신 드라이버 클래스를 다른 클래스로 간단히 전환할 수 있습니다.
최신 안정 버전은 0.3.12
입니다.
최신 개발 버전은 0.3.13-SNAPSHOT
입니다.
(및 기타 ARM 장치)
최신 버전(0.3.10)은 기본적으로 ARM에서 작동하지 않습니다. 작동하게 하려면 BridJ JAR 버전 0.6.2를 0.6.3-SNAPSHOT 또는 최신 bridj-0.7-20140918로 교체해야 합니다. 또한 최근 OpenIMAJ 팀의 Jonathon Hare는 armhf 아키텍처에 문제를 일으키는 bridj #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 파일에는 웹캠 캡처 API 자체와 모든 필수 종속성( libs
디렉터리에 있음)이 포함되어 있습니다. 다운로드하려면 아래 링크를 클릭하세요.
웹캠-캡처-0.3.12-dist.zip
최신 개발 버전 JAR(SNAPSHOT이라고도 함)은 여기에서 다운로드할 수 있습니다.
강한 의지, 여유 시간, 지식이 있거나 좋은 목적을 위해 지출하고 싶은 소액의 돈이 있다면 이 멋진 웹캠 캡처 API를 개발하는 데 도움을 주고 더 좋게 만들 수 있습니다! 다양한 종류의 기여를 환영합니다:
이 프로젝트가 훌륭하다고 생각한다면 돕고 싶지만 어떻게 해야 할지 모르신다면 프로젝트의 스타게이저가 될 수 있습니다. 주연을 맡으면 프로젝트가 더 인기를 얻게 됩니다. Github에서 알림 및 별표가 작동하는 방식에 대해 자세히 알아보려면 이 링크를 방문하세요.
버그를 발견했거나 웹캠 캡처를 더 나은 API로 만들 수 있는 몇 가지 환상적인 기능을 생각해냈다면, 문제가 무엇인지, 무엇인지 자세히 설명할 수 있는 새로운 문제를 주저하지 말고 만드십시오. 개선하고 싶나요?
웹캠 캡처는 기본 코드의 일부를 사용하므로 지원되는 모든 운영 체제를 포괄하는 것은 매우 어렵습니다. 저는 항상 64비트 Ubuntu Linux, Windows XP 및 Vista(모두 32비트)에서 테스트하고 있지만 Raspberry Pi, Mac OS 및 32비트 Linux에서는 테스트할 가능성이 없습니다. 그러한 가능성이 있는 경우 해당 시스템에서 도움을 주고 테스트해 보십시오.
Java 또는 C++를 알고 있다면 저장소를 포크하고 끌어오기 요청을 보내 웹캠 캡처 개발에 도움을 줄 수 있습니다. Github에서 다른 사람의 코드에 기여하는 방법을 모르는 경우 이 링크를 방문하세요.
사람들은 약간의 돈을 기부하고 싶다는 의사를 표명했습니다. 기부를 해도 내면의 따뜻한 느낌 외에는 특별한 어떤 것도 얻을 수 없으며 웹캠 캡처 프로젝트를 위해 더 자유롭게 사용할 수 있는 자료를 제작하도록 촉구할 수도 있습니다. PayPal을 통해 기부할 수 있습니다. 아래에 있는 기부 버튼을 클릭하면 기부 금액을 제공할 수 있는 안전한 PayPal 페이지로 리디렉션됩니다(최소 금액 없음).
아래 코드는 기본 웹캠에서 이미지를 캡처하여 hello-world.png
파일에 저장합니다.
Webcam webcam = Webcam . getDefault ();
webcam . open ();
ImageIO . write ( webcam . getImage (), "PNG" , new File ( "hello-world.png" ));
다음은 Java 코드에서 Webcam Capture API를 사용할 수 있는 방법을 보여주는 매우 기본적인 예입니다. 모든 내용은 프로젝트 소스 코드에서 찾을 수 있습니다. 이러한 예제 중 일부는 아직 Maven Central에 출시되지 않은 최신 API를 사용할 수 있습니다. 이러한 경우에는 최신 웹캠 캡처 API SNAPSHOT을 사용하고 있는지 확인하십시오.
WebcamPanel
에 표시된 이미지를 뒤집는 방법(미러)WebcamPanel
에 표시된 이미지를 회전하는 방법WebcamImageTransformer
사용하여 카메라에서 이미지를 회전하는 방법그리고 여기에 좀 더 고급 예제가 있는데, 아주 멋진 GUI가 있는 경우는 거의 없습니다.
JFrame
창에서 WebcamMotionDetector
사용하는 방법WebcamPanel.Painter
인터페이스를 사용하여 WebcamPanel
구성 요소에 효과를 그리는 방법WebcamImageTransformer
사용하여 카메라의 이미지에 직접 효과를 그리는 방법웹캠 캡처 초보자를 위한 Genuine Coder의 비디오 시리즈:
웹캠 캡처 API는 멀티미디어 및 카메라 작업에 사용되는 잘 알려진 프레임워크를 기반으로 구축된 여러 캡처 드라이버 에 이미 구현된 WebcamDriver
인터페이스를 정의합니다. 전체 목록은 아래에서 확인할 수 있습니다.
기본적으로(다른 드라이버가 지정되지 않은 경우) 라이브러리는 스레드로부터 안전한 컨테이너에 래핑된 멋진 OpenIMAJ 프레임워크의 작고 세련된 부분으로 구성된 기본 드라이버를 사용합니다. 그러나 기본 드라이버를 대체하거나 추가하여 사용할 수 있는 즉시 사용 가능한 드라이버가 더 있습니다. 이러한 드라이버를 활용하면 웹캠 캡처를 다양한 새로운 기능(예: IP 카메라 지원)으로 확장할 수 있습니다.
추가 캡처 드라이버 목록에는 다음이 포함됩니다.
드라이버 이름 | 안정적인 | 본부 | 설명 |
---|---|---|---|
IP캠 | 예 | 예 | IP/네트워크 카메라용 드라이버 |
fs웹캠 | 예 | 예 | FSWebcam CLI 도구용 드라이버 |
gstreamer | 예 | 예 | GStreamer 프레임워크용 드라이버 |
오픈마즈 | 예 | 예 | OpenIMAJ 프레임워크용 드라이버 |
v4l4j | 예 | 아니요 | V4L4j 라이브러리용 드라이버 |
jmf | 예 | 예 | JMF/FMJ 프레임워크용 드라이버 |
민사 | 예 | 예 | LTI-CIVIL 라이브러리용 드라이버 |
vlcj | 예 | 예 | vlcj 라이브러리용 드라이버 |
javacv | 예 | 예 | JavaCV 라이브러리용 드라이버 |
ffmpeg-cli | poc | 아니요 | FFmpeg CLI 도구용 드라이버 |
라스피캠 | 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 ());
자세한 내용과 바이너리 다운로드는 전용 웹캠-캡처-드라이버-ipcam 페이지에서 확인할 수 있습니다.
이 캡처 드라이버는 fswebcam
(Philip Heron 작성)이라는 CLI 도구를 사용하여 컴퓨터에 연결된 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
설치 방법 및 바이너리를 다운로드할 수 있는 위치에 대한 자세한 내용은 전용 웹캠-캡처-드라이버-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 사용 방법, 설치 방법 및 바이너리를 다운로드할 수 있는 위치에 대한 자세한 내용은 전용 웹캠-캡처-드라이버-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 ());
사용 방법과 바이너리를 다운로드할 수 있는 위치에 대한 자세한 내용은 전용 웹캠-캡처-드라이버-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 ());
사용 방법과 필요한 바이너리를 다운로드할 수 있는 위치에 대한 자세한 내용은 전용 웹캠-캡처-드라이버-v4l4j 페이지에서 확인할 수 있습니다.
UVC 웹캠 장치에 액세스하기 위해 JMF(Java Media Framework)를 사용하는 캡처 드라이버입니다. 이 드라이버를 사용하려면 먼저 JMF를 PC에 설치하고 구성해야 합니다. FMJ 프로젝트와 함께 사용할 수도 있습니다.
메이븐 의존성:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-jmf</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
사용 방법:
Webcam . setDriver ( new JmfDriver ());
사용 방법, 설치 방법, 필요한 바이너리를 다운로드할 수 있는 위치에 대한 자세한 내용은 전용 웹캠-캡처-드라이버-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 ());
사용 방법과 필요한 바이너리를 다운로드할 수 있는 위치에 대한 자세한 내용은 전용 웹캠 캡처 드라이버-lti-civil 페이지에서 확인할 수 있습니다.
이것은 Caprica Software Limited의 VLCj 라이브러리를 사용하여 UVC 카메라 장치에 액세스하는 캡처 드라이버입니다.
메이븐 의존성:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
그것을 사용하는 방법:
Webcam . setDriver ( new VlcjDriver ());
사용 방법, 설치 방법 및 필요한 바이너리를 다운로드할 수 있는 위치에 대한 자세한 내용은 전용 웹캠-캡처-드라이버-vlcj 페이지에서 확인할 수 있습니다.
OpenCV용 JavaCV 바인딩을 사용하여 UVC 카메라 장치에 액세스하는 캡처 드라이버입니다.
메이븐 의존성:
< 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의 ffmpeg
CLI 도구를 사용하여 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 ());
사용 방법, 설치 방법 및 필요한 바이너리를 다운로드할 수 있는 위치에 대한 자세한 내용은 전용 웹캠-캡처-드라이버-ffmpeg-cli 페이지에서 확인할 수 있습니다.
처음에는 Andrew Davison의 Killer Game 프로그래밍(온라인에서도 이용 가능)이라는 환상적인 책을 읽은 후 간단한 개념 증명으로 웹캠 캡처 작업을 시작했습니다. 고마워요 앤드류! 나중에 나는 웹캠에서 이미지를 캡처할 수 있는 Java API가 완전히 엉망이라는 것을 발견했습니다. 특정 API를 선택하면 코드의 큰 부분을 수정하지 않고는 변경할 수 없습니다. 나는 이 상황을 바꾸고 다양한 API(예: JMF, OpenCV, OpenIMAJ, LTI-CIVIL, VLC)에 대한 범용 래퍼를 작성하기로 결정했습니다. 이러한 방식으로 오늘날 우리가 알고 있는 웹캠 캡처가 구현되었습니다. 오늘날 웹캠 드라이버를 교체하는 것만으로도 기본 프레임워크를 변경할 수 있습니다(한 줄의 코드 변경). 특정 프레임워크에 대한 드라이버가 없으면 직접 작성하는 것이 매우 쉽습니다.
저작권 (C) 2012 - 2017 Bartosz Firyn (https://github.com/sarxos) 및 기여자
본 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 취득한 모든 사람에게 사용, 복사, 수정, 병합에 대한 권리를 포함하되 이에 국한되지 않고 제한 없이 소프트웨어를 취급할 수 있는 권한이 무료로 부여됩니다. , 다음 조건에 따라 소프트웨어 사본을 게시, 배포, 재라이센스 부여 및/또는 판매하고, 소프트웨어를 제공받은 사람이 그렇게 하도록 허용합니다.
위의 저작권 고지와 본 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함됩니다.
소프트웨어는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 어떠한 종류의 보증 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 작성자나 저작권 보유자는 계약, 불법 행위 또는 기타 행위로 인해 소프트웨어나 사용 또는 기타 거래와 관련하여 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다. 소프트웨어.