Ir ao conteúdo
  • Cadastre-se

Android + Opencv


Bossman

Posts recomendados

Boa tarde, estou a desenvolver uma aplicação em eclipse com opencv. A aplicação consiste em detectar e reconhecer objectos (predefinidos na base de dados) em tempo real. Inicialmente tem um menu onde o utilizador pode visualizar os objectos que a base de dados possui e de seguida o botao "go" que lança a camera do telemovel e tenta reconhecer esses mesmo objectos em video. Utilizei uma surfacetexture como suporte mas quando executo o "go" a aplicação crasha passado alguns segundos e no logcat para além de outras informações possui esta :

queueBuffer: SurfaceTexture has been abandoned!

 

Codigo para criar surface e setup da camera:

public void setupCamera(int width, int height) {//Log.i(TAG, "setupCamera");synchronized (this) {         if (mCamera != null) {                 Camera.Parameters params = mCamera.getParameters();                 List<Camera.Size> sizes = params.getSupportedPreviewSizes();                 mFrameWidth = width;                 mFrameHeight = height;                 // selecting optimal camera preview size                 {                         int minDiff = Integer.MAX_VALUE;                         for (Camera.Size size : sizes) {                                 if (Math.abs(size.height - height) < minDiff) {                                         mFrameWidth = size.width;                                         mFrameHeight = size.height;                                         minDiff = Math.abs(size.height - height);                                 }                         }                 }                 params.setPreviewSize(getFrameWidth(), getFrameHeight());                 //Log.i(TAG, Integer.valueOf(mFrameWidth).toString());                 //Log.i(TAG, Integer.valueOf(mFrameHeight).toString());                 params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);                 // List<String> FocusModes = params.getSupportedFocusModes();                 // if (FocusModes                 // .contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {                 // params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);                 // }                 mCamera.setParameters(params);                 /* Now allocate the buffer */                 params = mCamera.getParameters();                 int size = params.getPreviewSize().width                                 * params.getPreviewSize().height;                 size = size                                 * ImageFormat                                                 .getBitsPerPixel(params.getPreviewFormat()) / 8;                 mBuffer = new byte[size];                 /* The buffer where the current frame will be copied */                 mFrame = new byte[size];                 mCamera.addCallbackBuffer(mBuffer);                 onPreviewStarted(params.getPreviewSize().width,                                 params.getPreviewSize().height);                 try {                         setPreview();                 } catch (IOException e) {                         //Log.e(TAG,                                         //"mCamera.setPreviewDisplay/setPreviewTexture fails: "                                                         //+ e);                 }                 /*                         * Notify that the preview is about to be started and deliver                         * preview size                         */                 //onPreviewStarted(params.getPreviewSize().width,                                 //params.getPreviewSize().height);                 /* Now we can start a preview */                 mCamera.startPreview();         }}}public void surfaceChanged(SurfaceHolder _holder, int format, int width,         int height) {//Log.i(TAG, "surfaceChanged");setupCamera(width, height);}public void surfaceCreated(SurfaceHolder holder) {//Log.i(TAG, "surfaceCreated");(new Thread(this)).start();}public void surfaceDestroyed(SurfaceHolder holder) {//Log.i(TAG, "surfaceDestroyed");releaseCamera();}

Já pesquise este problema em vários foruns mas nenhum solucionou o meu problema. Ja experimentei a solução deste post mas alterar a ordem das funções não deu em nada. Alguem me consegue dar uma ajuda? 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...