Эта библиотека позволяет вам использовать встроенную или внешнюю веб-камеру непосредственно из Java. Он предназначен для абстрагирования часто используемых функций камеры и поддержки различных платформ захвата.
Предположим, что ваш код зависит от какой-то инфраструктуры захвата, но внезапно вам приходится отказаться от нее и использовать другую, возможно, более новую (например, заменить устаревший JMF новейшим GStreamer). При этом вам придется переписать значительную часть вашего кода, поскольку эти платформы совершенно разные и совершенно несовместимы. Именно здесь API Webcam Capture поможет спасти мир — он был создан, чтобы избавить вас от бремени таких ситуаций, чтобы вам больше не приходилось переписывать код, а вместо этого вы можете просто переключить класс драйвера на другой.
Последняя стабильная версия: 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 обнаружил проблему, описанную в 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. Этот ZIP-файл содержит сам API захвата веб-камеры и все необходимые зависимости (в каталоге libs
). Нажмите на ссылку ниже, чтобы загрузить его:
веб-камера-захват-0.3.12-dist.zip
Последнюю разрабатываемую версию JAR (также называемую SNAPSHOT) можно скачать здесь.
Если у вас есть сильная воля, свободное время, знания или даже небольшая сумма денег, которую вы хотели бы потратить на благие цели, вы можете помочь в разработке этого потрясающего API захвата веб-камеры и сделать его еще лучше! Приветствуются различные виды вкладов:
Если вы считаете этот проект отличным и хотели бы помочь, но не знаете как - вы можете стать звездочетом проекта. Снимаясь в главных ролях, вы делаете проект более популярным. Посетите эту ссылку, если хотите узнать больше о том, как работают уведомления и пометки на Github.
Если вы обнаружили ошибку или придумали какую-то фантастическую функцию, которая может сделать Webcam Capture более удобным API, не стесняйтесь создавать новую задачу, в которой вы можете подробно описать, в чем проблема или что Хотели бы вы улучшиться?
Поскольку Webcam Capture использует некоторую часть собственного кода, охватить все поддерживаемые операционные системы очень сложно. Я всегда тестирую его на 64-битных Ubuntu Linux, Windows XP и Vista (обе 32-битных), но у меня нет возможности протестировать его на 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" ));
Ниже приведены очень красивые простые примеры, демонстрирующие, как API Webcam Capture можно использовать в коде Java. Все можно найти в исходном коде проекта. Обратите внимание, что некоторые из этих примеров могут использовать новейший API, который еще не был выпущен для maven Central. В таком случае убедитесь, что вы используете новейшую версию API захвата веб-камеры SNAPSHOT.
WebcamPanel
WebcamPanel
WebcamImageTransformer
А вот еще несколько более продвинутых примеров, некоторые из которых имеют весьма необычный графический интерфейс.
WebcamMotionDetector
с окном JFrame
WebcamPanel.Painter
для рисования эффектов в компоненте WebcamPanel
WebcamImageTransformer
для рисования эффектов непосредственно на изображении с камерыСерия видео от Genuine Coder для новичков в Webcam Capture:
API Webcam Capture определяет интерфейс WebcamDriver
, который уже реализован в нескольких драйверах захвата , созданных на основе известных платформ, используемых для работы с мультимедиа и камерами. Полный список можно найти ниже.
По умолчанию (если не указан другой драйвер) библиотека использует драйвер по умолчанию , который состоит из небольшой усовершенствованной части великолепной структуры OpenIMAJ, завернутой в потокобезопасный контейнер. Однако существуют более готовые к использованию драйверы, которые можно использовать в качестве замены или дополнения к стандартному. Используя эти драйверы, Webcam Capture можно расширить различными новыми функциями (например, поддержкой IP-камеры).
Список дополнительных драйверов захвата включает в себя:
Имя драйвера | Стабильный | Центральный | Описание |
---|---|---|---|
IP-камера | да | да | Драйвер для IP/сетевой камеры |
фсвеб-камера | да | да | Драйвер для инструмента CLI FSWebcam |
gstreamer | да | да | Драйвер для платформы GStreamer |
опенимаж | да | да | Драйвер для платформы OpenIMAJ |
v4l4j | да | нет | Драйвер для библиотеки V4L4j |
JMF | да | да | Драйвер для фреймворков JMF/FMJ |
lti-гражданский | да | да | Драйвер для библиотеки LTI-CIVIL |
влкж | да | да | Драйвер для библиотеки vlcj |
javacv | да | да | Драйвер для библиотеки JavaCV |
ffmpeg-кли | POC | нет | Драйвер для инструмента CLI FFmpeg |
распикам | POC | нет | Драйвер для инструмента 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 ());
Более подробную информацию и загрузку двоичных файлов можно найти на специальной странице webcam-capture-driver-ipcam.
Этот драйвер захвата дает возможность использовать инструмент CLI под названием fswebcam
(написанный Филипом Хероном) для доступа к устройствам 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
и где можно загрузить двоичные файлы, можно найти на специальной странице webcam-capture-driver-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 и где можно загрузить двоичные файлы, можно найти на специальной странице webcam-capture-driver-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 ());
Более подробную информацию о том, как его использовать и где можно скачать двоичные файлы, можно найти на специальной странице webcam-capture-driver-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 ());
Более подробную информацию о том, как его использовать и при необходимости можно загрузить двоичные файлы, можно найти на специальной странице webcam-capture-driver-lti-civil.
Это драйвер захвата, который использует библиотеку 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 ());
Более подробную информацию о том, как его использовать, как установить и где можно загрузить необходимые двоичные файлы, можно найти на специальной странице webcam-capture-driver-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 ());
Более подробную информацию о том, как его использовать, как установить и где можно загрузить необходимые двоичные файлы, можно найти на специальной странице webcam-capture-driver-javacv.
Это драйвер захвата, который использует инструмент CLI ffmpeg
из 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 ());
Более подробную информацию о том, как его использовать, как установить и где можно загрузить необходимые двоичные файлы, можно найти на специальной странице webcam-capture-driver-ffmpeg-cli.
Первоначально я начал работать над Webcam Capture в качестве простой проверки концепции после того, как прочитал фантастическую книгу Эндрю Дэвисона под названием «Программирование убийственных игр» (которая также доступна в Интернете). Спасибо, Андрей! Позже я обнаружил, что в API Java, позволяющих захватывать изображения с веб-камер, царит полный беспорядок. Выбрав конкретный API, вы не сможете изменить его без изменения больших частей кода. Я решил изменить эту ситуацию и написать оболочку общего назначения для различных API (таких как JMF, OpenCV, OpenIMAJ, LTI-CIVIL, VLC). Таким образом, технология Webcam Capture, какой мы ее знаем сегодня, была воплощена в жизнь. Сегодня вы можете изменить базовые платформы, просто заменив драйвер веб-камеры (изменение кода в одну строку). Если драйвера для конкретного фреймворка нет, его очень легко написать самостоятельно.
Авторские права (C) 2012–2017 Бартош Фирин (https://github.com/sarxos) и участники
Настоящим бесплатно любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), предоставляется разрешение на работу с Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение. публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Вышеупомянутое уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ В ДЕЙСТВИЯХ ПО КОНТРАКТУ, ПРАВОНАРУШЕНИЮ ИЛИ ДРУГИМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ОТ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.