【问题标题】:JAVACV : Webcam capturing using javacvJAVACV:使用 javacv 捕获网络摄像头
【发布时间】:2012-07-18 10:24:14
【问题描述】:

尝试使用 JAVACV 库从网络摄像头捕获。但它会抛出一个UnsatisfiedLinkError。 堆栈跟踪如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError:
C:\Users\anooj\AppData\Local\Temp\javacpp7955905460040\jniopencv_core.dll: %1 is not a valid Win32 application
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1928)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:418)
at com.googlecode.javacpp.Loader.load(Loader.java:368)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:131)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.googlecode.javacpp.Loader.load(Loader.java:334)
at com.googlecode.javacv.cpp.opencv_imgproc.<clinit>(opencv_imgproc.java:96)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.googlecode.javacpp.Loader.load(Loader.java:334)
at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:91)
at com.googlecode.javacv.OpenCVFrameGrabber.start(OpenCVFrameGrabber.java:170)
at javaapplication16.JavaApplication16.captureframe(JavaApplication16.java:24)
at javaapplication16.JavaApplication16.main(JavaApplication16.java:38)
Java Result: 1

我们的代码如下:

import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage;

public class JavaApplication16 {

/**
 * @param args the command line arguments
 */
    public static void captureframe()
    {
        OpenCVFrameGrabber grabber=new OpenCVFrameGrabber(0);
        try
        {
            grabber.start();
            IplImage img=grabber.grab();
            if(img!=null)
            {
                cvSaveImage("capture.jpg", img);
            }
        }
        catch(Exception ae)
        {
            ae.printStackTrace();

        }
    }
    public static void main(String[] args) {
        captureframe();
    }    
}

【问题讨论】:

    标签: opencv webcam javacv


    【解决方案1】:

    【讨论】:

    • 非常感谢。现在网络摄像头捕获成功。我想截取任何框架的屏幕截图并将其保存在任何目标中。是否可以将 IplImage 保存为 png 文件或 jpg 文件?
    • 您可以使用 cvSaveImage(String filename, IplImage img)。您可以在文件名本身中指定所需的格式。例如 cvSaveImage("myImg.png", img)
    【解决方案2】:

    记住openCV和javaCV的版本必须匹配。 下载最新版openCV 2..46 http://opencv.org/downloads.html

    并下载 javacp https://code.google.com/p/javacv/downloads/list [注意:选择 javacv-0.6-cppjars.zip 85.0 MB]

    在这种情况下,你不会在线程“main”java.lang.UnsatisfiedLinkError 中得到异常:

    我的代码运行成功。

    【讨论】:

      【解决方案3】:

      查看此链接以解决您遇到的错误Link1

      查看此链接以获取从相机中捕获图像的程序,将其保存为 JPG 格式并在画布上显示Link2

      希望它能解决您的问题。

      【讨论】:

      • 非常感谢您。我还想知道如何使用 Javacv 从我的网络摄像头录制视频。如何使用 FrameRecorder 实现它。
      • 显示 2012 年 8 月 5 日下午 5:11:19 motiontest1.Motiontest1$RemindTask 运行严重:空 com.googlecode.javacv.FrameRecorder$Exception:cvWriteFrame():无法在 com.googlecode 记录帧.javacv.OpenCVFrameRecorder.record(OpenCVFrameRecorder.java:90)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      相关资源
      最近更新 更多