2013-11-21 49 views
-1

我正在使用OpenCV进行对象检测项目。我试图使用VideoCapture从存储的视频文件中读取帧,但在OpenCV Java中没有当前的实现。我遵循这篇文章中的指示:open video file with opencv java,编辑OpenCV Java的源文件以允许此功能。问题是我不知道如何重新编译这些文件? - 因为我刚刚将下载的opencv jar文件添加到了我的eclipse项目中。重新编译用于Eclipse的OpenCV Java

+1

谷歌“建设OpenCV的”,你应该得到你的答案。 – Bull

+0

缺少的VideoCapture构造函数在2.4.7中修复。你将不必重新编译自己 – berak

+0

嗨贝拉克。我有OpenCV 2.4.7,但VideoCapture(字符串文件名)构造函数仍然丢失。 – user3019612

回答

-1

您应该尝试JavaCV,这是一个用于Java的OpenCV封装器。

This post显示您需要下载/安装以使系统正常工作,但我相信您可以在Web上找到更多更新的帖子。

一个在我的OpenCV的迷你课程,目前我演示包含使用JavaCV加载视频文件,并在窗口上显示它的源代码:

import static com.googlecode.javacv.cpp.opencv_core.*; 
import static com.googlecode.javacv.cpp.opencv_imgproc.*; 
import static com.googlecode.javacv.cpp.opencv_highgui.*; 
import com.googlecode.javacv.OpenCVFrameGrabber; 
import com.googlecode.javacv.FrameGrabber; 

public class OpenCV_tut4 
{ 
    public static void main(String[] args) 
    { 
     FrameGrabber grabber = new OpenCVFrameGrabber("demo.avi"); 
     if (grabber == null) 
     { 
      System.out.println("!!! Failed OpenCVFrameGrabber"); 
      return; 
     } 

     cvNamedWindow("video_demo"); 

     try    
     { 
      grabber.start();   // initialize video capture 
      IplImage frame = null; 

      while (true) 
      { 
       frame = grabber.grab(); // capture a single frame    
       if (frame == null) 
       { 
        System.out.println("!!! Failed grab"); 
        break; 
       } 

       cvShowImage("video_demo", frame); 
       int key = cvWaitKey(33); 
       if (key == 27)   // ESC was pressed, abort! 
        break; 
      } 

     } 
     catch (Exception e) 
     {  
      System.out.println("!!! An exception occurred"); 
     } 
    } 
} 
+0

谢谢。我会研究它。我还应该提到该计划将在Android上。 JavaCV会和OpenCV4Android非常相似吗? – user3019612

+0

我不知道,但我知道JavaCV接口与OpenCV的C API非常相似。 – karlphillip

+0

谢谢。此外,我希望你可以帮助这个:我得到异常运行你的代码与以下错误信息:!!!发生异常 警告:打开文件时出错(../../modules/highgui/src/cap_ffmpeg_impl.hpp:529) – user3019612