【发布时间】:2014-01-17 12:53:54
【问题描述】:
我目前正在开始一个项目,我想从我的网络摄像头捕获和操作数据流,以便开始我想从我的网络摄像头拍摄一些照片并将这些照片展示给用户。然而,这给出了一个错误。
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 的说法,我不应该得到一个
线程“Thread-3”java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 jnivideoInputLib
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)
异常。
【问题讨论】:
-
错误是抱怨缺少原生库。类似问题:code.google.com/p/javacv/issues/detail?id=307。如果我理解正确,
videoInput仅适用于 Windows。您需要使用不同的库。 -
即使使用链接中建议的其他类,它似乎也无法正常工作,因为它仍然会引发错误,还有其他想法吗?
-
尝试使用 FrameGrabber.createDefault(0)
-
添加它会给我一个空指针异常我应该改变 FrameGrabber grabber = new VideoInputFrameGrabber(0);进入抓取器 = FrameGrabber.createDefault(0);对吗?
标签: java macos exception webcam javacv