Как я могу сохранить некоторый кадр камеры в vector и затем воспроизвести в JavaCameraView?

#java #android #opencv #record #javacameraview

#java #Android #opencv #запись #javacameraview

Вопрос:

Я использую Android Studio, OpenCV и JavaCameraView для отображения кадра с камеры. Я хочу создать простой Mat frame recorder. Например, я хочу сохранить 100 последних кадров, а затем отобразить их в JavaCameraView.

У меня есть векторные записанные кадры камеры для хранения кадров Mat. В функции onCameraFrame у меня есть…

 @Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame cameraFrame) {

colorMat = cameraFrame.rgba();

if(frameCountForRecording < 100){
    recordedCameraFrames.add(colorMat);
    frameCountForRecording  ;
}       
else {
    isRecordedFramesReadyToPlay = true;
    recordedCameraFrames.remove(0);
    recordedCameraFrames.add(colorMat);
}
  

И затем, когда я активирую PLAY_DETECTED_FRAMES_VIEW_MODE, я хочу воспроизвести записанные кадры…

 case PLAY_DETECTED_FRAMES_VIEW_MODE:

if(isRecordedFramesReadyToPlay == true amp;amp; canPlayRecordedFrames == true) {
        if (indexOfRecordedFrame == 99) {
              indexOfRecordedFrame = 0;
        }
        indexOfRecordedFrame  ;
        colorMat = recordedCameraFrames.get(indexOfRecordedFrame).clone();
}
break;
  

Комментарии:

1. итак .. в чем проблема?

2. Проблема в том, что функция onCameraFrame по-прежнему возвращает исходную цветопередачу, цветопередача из векторных записанных кадров камеры отсутствует.

3. Где вы вернули colorMat из функции?

4. В конце функции onCameraFrame я возвращаю colorMat.

5. Вы делаете то же самое при каждом вызове colorMat = cameraFrame.rgba(); в onCameraFrame() функции. А также вы переопределяете цветовую палитру в обеих функциях?