我正在开发一个 android 应用程序,它使用 opencv 库提供的类 org.opencv.android.JavaCameraView 打开视频流,并从中捕获帧,以便在它们显示在屏幕上之前对其进行处理。
应用程序以这种方式组织:
主线程,有 OnCameraFrame 方法,获取帧并发送给线程 A,该方法还负责在屏幕上显示最后一帧。所以所有的处理都应该在帧被获取之后,在屏幕上显示之前,在这个方法的“中间”进行。
线程 A,将获取的帧保存到缓冲区 BlockingLinkedQueue 中;
线程B,它从缓冲区中取出一个帧,并将其发送到负责处理的线程C;
处理帧的线程C,并将其发送到主线程。
所以问题是:我怎样才能阻止方法 OnCameraFrame,所以它不能在屏幕上显示任何帧,直到它从最后一个线程(C)返回?如果我不实现这种类型的任何东西,因为处理需要一些时间,我不会在屏幕上正确看到最终帧。
我希望我已经清楚地解释了我的问题。