Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java捕获网络摄像头图像macbook_Java_Macos_Exception_Webcam_Javacv - Fatal编程技术网

java捕获网络摄像头图像macbook

java捕获网络摄像头图像macbook,java,macos,exception,webcam,javacv,Java,Macos,Exception,Webcam,Javacv,我目前正在开始一个项目,我想从我的网络摄像头中捕获和操作数据流,以便开始我想从我的网络摄像头中拍摄一些照片并向用户展示。然而,这给出了一个错误 public class quicktest implements Runnable { public static void main(String[] args){ Thread t=new Thread(new quicktest()); t.start(); }

我目前正在开始一个项目,我想从我的网络摄像头中捕获和操作数据流,以便开始我想从我的网络摄像头中拍摄一些照片并向用户展示。然而,这给出了一个错误

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)

例外

您的JavaCV似乎设置不正确

你做过以下事情吗

  • 下载了xxx bin.zip和xxx cppjars.zip
  • 解压缩.zip文件
  • 将xxx-macosx-x86_64.jar添加到eclipse项目中
  • 顺便说一下,如果有人知道另一种从我的 将网络摄像头转换为java,这将有助于

    由于您使用的是macbook,您可以执行以下操作:

    Runtime.getRuntime().exec("screencapture tempfile.jpg");
    InputStream in = new FileInputStream("tempfile.jpg");
    

    我也面临同样的问题。 我使用MacOSX和OpenCV-2.4.10以及JavaCV0.10

    当我试图运行ColoredObjectTrack.java(出现在javaCV示例中)时遇到的这个问题
    我使用OpenCVFrameGrabber而不是VideoInputFrameGrabber。它成功了。

    错误是抱怨缺少本机库。类似问题:。如果我理解正确,
    videoInput
    仅适用于Windows。您需要使用不同的库。它甚至与链接中建议的其他类都不起作用,因为它仍然会抛出错误,还有其他想法吗?尝试使用FrameGrabber.createDefault(0)在中添加它会给我一个空指针异常,我应该更改FrameGrabber grabber=new VideoInputFrameGrabber(0);into grabber=FrameGrabber.createDefault(0);对吗?这将创建当前屏幕的屏幕截图。不是网络摄像头的图像,你说得对。我在想你的图像已经出现在屏幕上了。我注意到在您的代码中,您正在调用新的VideoInputFrameGrabber(0)。您尝试调用FrameGrabber.createDefault(0)了吗?这似乎在FrameGrabber.createDefault(0)上生成了一个空指针异常,这听起来很奇怪。您是否可以将其作为实例而不是静态调用(grabber.createDefault而不是FrameGrabber.createDefault)。如果没有,你能在com.googlecode.javacv.FrameGrabber.create(FrameGrabber.java:95)的com.googlecode.javacv.FrameGrabber.createDefault(FrameGrabber.java:118)的quicktest.run(quicktest.java:20)的java.lang.thread.run(thread.java:695)上发布堆栈跟踪吗第20行为
    grabber=FrameGrabber.createDefault(0)您能提供更多信息吗?您可以从文档中添加示例代码或报价。
    
    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)
    
    Runtime.getRuntime().exec("screencapture tempfile.jpg");
    InputStream in = new FileInputStream("tempfile.jpg");