使用 Opencv 从 Android 中的 CameraGLSurfaceView 拍照
Take picture from CameraGLSurfaceView in Android with Opencv
我在 Android http://docs.opencv.org/trunk/d7/dbd/tutorial_android_ocl_intro.html
中实现了应用 OpenCL 的示例
它使用 GLSurfaceView 并使用 C++ 更新来自相机的图像。这
C++ 代码使用具有 glReadPixels
的 GL 库
我的问题是,是否可以使用这种架构拍照(具有照片分辨率)?我试图实现 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
最后,我找到了 Camera2 的 Google 示例。 GLSurfaceView 似乎是这个项目的一个实现。我比较了这两个项目,并创建了必要的 类 来拍照。
我在 Android http://docs.opencv.org/trunk/d7/dbd/tutorial_android_ocl_intro.html
中实现了应用 OpenCL 的示例它使用 GLSurfaceView 并使用 C++ 更新来自相机的图像。这
C++ 代码使用具有 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
最后,我找到了 Camera2 的 Google 示例。 GLSurfaceView 似乎是这个项目的一个实现。我比较了这两个项目,并创建了必要的 类 来拍照。