2013-06-18 113 views
7

我只需要知道我該如何開始,實際上我需要使用opencv打開Android本機相機。使用OpenCV打開Android本機相機

我在哪裏可以找到相關的文檔或任何幫助材料? 我已經安裝了我的eclipse與opencv示例項目一起工作!

回答

15

看看opencv/samples/android /中已發佈的opencv示例,那麼您應該可以找到一些很好的示例。這裏也是鏈接到顯示how to open the camera的文檔。不要忘記請求訪問攝像機的權限。

短版,看到該鏈接的全部細節: 添加布局:

<org.opencv.android.JavaCameraView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:visibility="gone" 
    android:id="@+id/HelloOpenCvView" 
    opencv:show_fps="true" 
    opencv:camera_id="any" /> 

初始化過程:

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { 
    @Override 
    public void onManagerConnected(int status) { 
     switch (status) { 
      case LoaderCallbackInterface.SUCCESS: 
      { 
       Log.i(TAG, "OpenCV loaded successfully"); 
       mOpenCvCameraView.enableView(); 
      } break; 
      default: 
      { 
       super.onManagerConnected(status); 
      } break; 
     } 
    } 
}; 

@Override 
public void onResume() 
{ 
    super.onResume(); 
    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); 
} 

實現CVFrameListener2接口:

private CameraBridgeViewBase mOpenCvCameraView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    Log.i(TAG, "called onCreate"); 
    super.onCreate(savedInstanceState); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    setContentView(R.layout.HelloOpenCvLayout); 
    mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.HelloOpenCvView); 
    mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); 
    mOpenCvCameraView.setCvCameraViewListener(this); 
} 

@Override 
public void onPause() 
{ 
    super.onPause(); 
    if (mOpenCvCameraView != null) 
     mOpenCvCameraView.disableView(); 
} 

public void onDestroy() { 
    super.onDestroy(); 
    if (mOpenCvCameraView != null) 
     mOpenCvCameraView.disableView(); 
} 

public void onCameraViewStarted(int width, int height) { 
} 

public void onCameraViewStopped() { 
} 

public Mat onCameraFrame(CvCameraViewFrame inputFrame) { 
    return inputFrame.rgba(); 
} 
+0

可能你也知道如何從拍攝的圖像中檢測區域? – TharakaNirmana

+0

請將此添加爲新問題,因爲這與此無關。特別是因爲這是一個廣泛的話題。 – Nicholas