В настоящее время я начинаю проект, где хочу захватить и управлять потоком данных с веб-камеры, чтобы начать работу. Я хотел взять несколько фотографий с веб-камеры и показать их пользователю. Однако это дало ошибку.java capture webcam images macbook
public class quicktest implements Runnable {
public static void main(String[] args){
Thread t=new Thread(new quicktest());
t.start();
}
IplImage image;
CanvasFrame canvas = new CanvasFrame("Web Cam");
public quicktest() {
canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
}
@Override
public void run() {
FrameGrabber grabber = new VideoInputFrameGrabber(0);
int i=0;
try {
grabber.start();
IplImage img;
while (true) {
img = grabber.grab();
if (img != null) {
cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
// show image on window
canvas.showImage(img);
}
Thread.sleep(1000);
}
} catch (Exception e) {
}
}
это дает следующее исключение:
Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: no jnivideoInputLib in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1764)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1044)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:711)
at com.googlecode.javacpp.Loader.load(Loader.java:586)
at com.googlecode.javacpp.Loader.load(Loader.java:540)
at com.googlecode.javacv.cpp.videoInputLib.<clinit>(videoInputLib.java:81)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at com.googlecode.javacpp.Loader.load(Loader.java:561)
at com.googlecode.javacpp.Loader.load(Loader.java:540)
at com.googlecode.javacv.cpp.videoInputLib$videoInput.<clinit>(videoInputLib.java:193)
at com.googlecode.javacv.VideoInputFrameGrabber.start(VideoInputFrameGrabber.java:101)
at com.googlecode.javacv.VideoInputFrameGrabber.start(VideoInputFrameGrabber.java:98)
at quicktest.run(quicktest.java:27)
at java.lang.Thread.run(Thread.java:695)
Я уже искал и попробовал то, что было предложено here, однако это дало мне еще одну ошибку:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at com.googlecode.javacpp.Loader.load(Loader.java:561)
at com.googlecode.javacpp.Loader.load(Loader.java:540)
at com.googlecode.javacv.cpp.videoInputLib$videoInput.<clinit>(videoInputLib.java:193)
at Main.main(Main.java:5)
ли кто-нибудь знает, как исправить это? Кстати, это происходит на macbook pro 10.7.5 и пытается использовать сборку в веб-камере. И хотя это определенно не должно иметь значения, есть также раскол окуля. Использование OpenCVFrameGrabber
вместо этого дало мне исключение java.lang.UnsatisfiedLinkError: no jniopencv_highgui in java.library.path
.
Кстати, если кто-то знает еще один простой способ получить изображения с моей веб-камеры в java, что было бы полезно.
нимало, что benny.la сказал я isntead получить
исключение в потоке java.lang.UnsatisfiedLinkError "Thread-3": нет jnivideoInputLib в java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1764)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1044)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:711)
at com.googlecode.javacpp.Loader.load(Loader.java:586)
at com.googlecode.javacpp.Loader.load(Loader.java:540)
at com.googlecode.javacv.cpp.videoInputLib.<clinit>(videoInputLib.java:81)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at com.googlecode.javacpp.Loader.load(Loader.java:561)
at com.googlecode.javacpp.Loader.load(Loader.java:540)
at com.googlecode.javacv.cpp.videoInputLib$videoInput.<clinit>(videoInputLib.java:193)
at com.googlecode.javacv.VideoInputFrameGrabber.start(VideoInputFrameGrabber.java:101)
at com.googlecode.javacv.VideoInputFrameGrabber.start(VideoInputFrameGrabber.java:98)
at quicktest.run(quicktest.java:29)
at java.lang.Thread.run(Thread.java:695)
исключение.
Ошибка связана с отсутствием нужной библиотеки. Аналогичная проблема: http://code.google.com/p/javacv/issues/detail?id=307. Если я правильно понимаю, 'videoInput' - только Windows. Вам нужно использовать другую библиотеку. –
Это действительно не работает даже с другими классами, предложенными внутри вашей ссылки, поскольку он все еще порождает ошибки, любые другие идеи? – Thijser
Попробуйте использовать FrameGrabber.createDefault (0) – Dyrborg