Ir ao conteúdo
  • Cadastre-se

Bossman

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

0
  1. 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?

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...