Как устранить ошибку сегментации при чтении следующего видеокадра на centos - PullRequest
0 голосов
/ 26 февраля 2019

Я запускаю эту программу на Centos6.8, я всегда получаю Ошибка сегментации (ядро сброшено)

Я также использовал GDB дляотладка, он говорит

Program received signal SIGSEGV, Segmentation fault.
memcpy () at ../sysdeps/x86_64/memcpy.S:398
398     movq    48(%rsi), %r13

Но когда я запускаю эту ту же самую программу на моем Ubuntu18.04, она отлично работала.или мне нужно изменить другой API для чтения фреймов.

Кстати, я могу читать четыре фрейма в начале, после этого я получил ошибку сегментации

OpenCV версия => 2.4.9

Спасибо заранее.

#include <iostream>
#include <math.h>
#include <chrono>
#include <opencv2/opencv.hpp>
#include <fstream>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
    Mat image;
    int a;
    VideoCapture video("15_41_24_24670.avi");
    int i = 0;
    try{
        while(true){
            video >> image;
            if(image.empty())
                break;
            cout << i++ <<endl;
        }
    }
    catch(std::exception& e){
        std::cerr << "Exception caught : " << e.what() << std::endl;
        cout<<"error"<<endl;
        return 0;
    }
    cout<<"successful"<<endl;
    return 0;
}

Выход:

0
1
2
3
4
5
6
Segmentation fault (core dumped)

1 Ответ

0 голосов
/ 26 февраля 2019

Попробуйте установить backend для VideoCapture:

VideoCapture video ("15_41_24_24670.avi", cv :: CAP_FFMPEG);

или

VideoCapture video ("15_41_24_24670.avi", cv :: CAP_GSTREAMER);

или что-либо еще

...