2012-07-18 103 views
1

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

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(); 
    }  
} 

回答

1

链路建议 看到此链接为您解决了Link1

错误查看该程序的链接以从相机捕捉图像,将其保存为JPG格式并在画布上显示它Link2

希望它解决您的查询。

+0

非常感谢您。另外我想知道如何使用Javacv从我的摄像头录制视频。我如何使用FrameRecorder来实现它。 – 2012-08-05 11:15:07

+0

显示 2012年8月5日下午5时11分19秒motiontest1.Motiontest1 $ RemindTask运行 重度:空 com.googlecode.javacv.FrameRecorder $例外:cvWriteFrame():在com.googlecode.javacv无法记录帧 \t .OpenCVFrameRecorder.record(OpenCVFrameRecorder.java:90) – 2012-08-05 11:42:22

2
+0

非常感谢。 现在摄像头捕获成功。我想截取任何帧的截图并将其保存在任何目标中。 是否可以将IplImage保存为PNG文件或JPG文件? – 2012-07-21 02:55:06

+1

您可以使用cvSaveImage(字符串文件名,IplImage img)。您可以在文件名中指定所需的格式。例如cvSaveImage(“myImg.png”,img) – nikhil 2012-07-21 13:52:20