【发布时间】:2014-12-25 04:08:39
【问题描述】:
嗨, 我正在为我的机器人项目在 Android 上进行图像处理。在我的项目中,我有 3 个服务:CameraService、VisionService、TakePictureService。
- CameraService: 使用 VideoCapture (OpenCV) 本地读取相机并通过 CAMERA_INTENT 广播 byte[] 数据
- VisionService:接收byte[]数据帧,处理人脸检测,广播人脸定位
- TakePictureService: 接收 byte[] 数据帧,当人脸在图像中心时,在 SurfaceView 上绘制并将帧保存到 sdcard。
问题是系统不断执行GC_FOR_ALLOC来释放前一帧数据并分配新帧。当我的应用程序运行一段时间后,我的设备将重新启动。
在重新启动之前,logcat 显示许多 GC_FOR_ALLOC 而没有其他任何内容,然后显示一些 FAILED_BINDER_TRANSTION 并重新启动。
我想问有没有办法解决这个问题。我的机器人需要执行不间断的计算机视觉任务。需要图片数据的服务很多,Camera只能打开一次,所以需要广播byte[]数据帧。
你有什么建议吗?
非常感谢
【问题讨论】:
标签: android android-intent image-processing memory-management computer-vision