Попытка обнаружить лица в mp4 (javacv + opencv) приводит к фатальным ошибкам SIGSERV - PullRequest
0 голосов
/ 14 ноября 2018

Мое лучшее предположение: я как-то не выпускаю фреймы?

Я читаю видео, используя org.bytedeco.javacv.FFmpegFrameGrabber, и конвертирую кадры в opencv_core.Mat, затем конвертирую ТЕ в opencv.core.Mat (потому что мне нужно запустить CascadeClassifier на нем, а у нас не может быть хороших вещей). Затем я пропускаю кадры, которые уже были обработаны.

Затем он падает.

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x000000010a6c2d21, pid=746, tid=0x0000000000005103
#
# JRE version: Java(TM) SE Runtime Environment (8.0_191-b12) (build 1.8.0_191-b12)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.191-b12 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# C  [libopencv_java342.dylib+0xed21]  Java_org_opencv_core_Mat_n_1delete+0x21

Странная вещь: если я не пропущу ранее обработанные кадры, похоже, все работает нормально! Вот почему я задавался вопросом, происходила ли какая-то гонка, где время, затрачиваемое на обработку кадров, дает системе время, чтобы наверстать упущенное при очистке от мусора?

Код (должен иметь возможность проверить проект и запустить его в IntelliJ, если у вас достаточно длинный файл input.mp4 для его проверки)

...