Я реализовал пример для применения OpenCL в Android http://docs.opencv.org/trunk/d7/dbd/tutorial_android_ocl_intro.html
Он использует GLSurfaceView и обновляет изображения с камеры в C ++.
Код C ++ использует библиотеки GL с glReadPixels
У меня вопрос, возможно ли сделать снимок (с разрешением фотографии) с этой архитектурой? Я пытался реализовать camera.takePicture
и это моя ошибка:
04-28 16:57:18.237 203 9805 E Camera2ClientBase: takePicture: attempt to use a locked camera from a different process (old pid 0, new pid 32146)
--------- beginning of crash
04-28 16:57:18.260 32146 32279 E AndroidRuntime: FATAL EXCEPTION: GLThread 599
04-28 16:57:18.260 32146 32279 E AndroidRuntime: Process: edu.uab.cvc.camera, PID: 32146
04-28 16:57:18.260 32146 32279 E AndroidRuntime: java.lang.RuntimeException: takePicture failed
04-28 16:57:18.260 32146 32279 E AndroidRuntime: at android.hardware.Camera.native_takePicture(Native Method)
04-28 16:57:18.260 32146 32279 E AndroidRuntime: at android.hardware.Camera.takePicture(Camera.java:1434)
04-28 16:57:18.260 32146 32279 E AndroidRuntime: at edu.uab.cvc.camera.MyGLSurfaceView.takePhoto(MyGLSurfaceView.java:165)
04-28 16:57:18.260 32146 32279 E AndroidRuntime: at edu.uab.cvc.camera.MyGLSurfaceView.onCameraTexture(MyGLSurfaceView.java:139)
04-28 16:57:18.260 32146 32279 E AndroidRuntime: at org.opencv.android.CameraGLRendererBase.onDrawFrame(CameraGLRendererBase.java:131)
04-28 16:57:18.260 32146 32279 E AndroidRuntime: at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1535)
04-28 16:57:18.260 32146 32279 E AndroidRuntime: at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
04-28 16:57:18.276 779 3430 W ActivityManager: Force finishing activity edu.uab.cvc.camera/.MainActivity
Наконец, я нашел пример Google для Camera2. GLSurfaceView кажется реализацией этого проекта. Я сравнил два проекта и создал необходимые классы для фотографирования.
Других решений пока нет …