2013-11-21 47 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