2014-09-03 2 views
1

Я хочу загрузить изображение с классом Mat на android opencv, но у меня есть некоторые ошибки. Я добавляю библиотеку в свой проект. мой код: частный CameraBridgeViewBase mOpenCvCameraView;
частный BaseLoaderCallback mLoaderCallback = новый BaseLoaderCallback (это) { @Override общественных недействительного onManagerConnected (интермедиат статус) { переключателя (состояние) { случай LoaderCallbackInterface.SUCCESS: { Log.i (TAG, "OpenCV успешно загружен"); mOpenCvCameraView.enableView(); } break; по умолчанию: { super.onManagerConnected (status); } break; } } };не может загрузить изображение в Mat opencv

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



@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.activity_main); 
    mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.HelloOpenCvView); 
    mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); 
    mOpenCvCameraView.setCvCameraViewListener(this); 
    if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback)) 
    { 
     Log.e(TAG, "Cannot connect to OpenCV Manager"); 
    } 
    else 
     Log.i(TAG, "Load it"); 

    Mat Image = Highgui.imread("/mnt/sdcard/1.jpg"); 

} 

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

Вход:

enter image description here

Благодаря

ответ

1

вы не можете использовать любой OpenCV код в OnCreate()

так это с машинным кодом OpenCV являются не загружены все же вам придется подождать, пока mLoaderCallback закончит.

так что переместите любую операцию на матрицу на onCameraViewStarted()

+0

спасибо, это работа –

Смежные вопросы