Здесь я написал код для захвата изображения с USB-камеры с помощью java.
Ниже приведен код:
Webcam webcam = Webcam.getDefault();
webcam.open();
try {
ImageIO.write(webcam.getImage(), "PNG", new File("d:/hello-world1.png"));
System.out.println(Thread.currentThread().getName());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
И я добавил 3 баночки, что когда-либо требовалось, но при запуске приложения изображение не получается, исключение возникает.
Ниже приведено Исключение:
Exception in thread "main" com.github.sarxos.webcam.WebcamException: Cannot execute task
at com.github.sarxos.webcam.WebcamProcessor$AtomicProcessor.process(WebcamProcessor.java:57)
at com.github.sarxos.webcam.WebcamProcessor.process(WebcamProcessor.java:120)
at com.github.sarxos.webcam.WebcamTask.process(WebcamTask.java:35)
at com.github.sarxos.webcam.ds.cgt.WebcamOpenTask.open(WebcamOpenTask.java:20)
at com.github.sarxos.webcam.Webcam.open(Webcam.java:187)
at com.github.sarxos.webcam.Webcam.open(Webcam.java:147)
at ImageCapture.main(ImageCapture.java:16)
Caused by: com.github.sarxos.webcam.WebcamException: Cannot start native grabber!
at com.github.sarxos.webcam.ds.buildin.WebcamDefaultDevice.open(WebcamDefaultDevice.java:220)
at com.github.sarxos.webcam.ds.cgt.WebcamOpenTask.handle(WebcamOpenTask.java:38)
at com.github.sarxos.webcam.WebcamProcessor$AtomicProcessor.run(WebcamProcessor.java:66)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Пожалуйста, предложите мне любую идею, где я ошибаюсь.
Если вы посмотрите на исходный код, сообщение Cannot start native grabber
grabber.openSession(...)
Cannot start native grabber
возникает, если grabber.openSession(...)
возвращает false
где grabber=new OpenIMAJGrabber();
который является родным прокси-сервером Bridj
. Этот улов затрудняет диагностику, поскольку реальное исключение скрыто. Кажется, существует проблема с доступом к библиотеке, поэтому вы должны проверить, действительно ли .so
или .dll
в вашем пути к классам. Вы должны рассмотреть возможность отладки, чтобы убедиться, что grabber
хорошо создан...