Сегментация дефектов обнаружения движения Opencv4tegra - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь реализовать алгоритм MoG на моем Jetson TK1.Я использую OpenCV4Tegra 2.4.Код успешно скомпилирован, но когда я пытаюсь выполнить его, я получаю эту ошибку: ошибка сегментации Любая помощь, пожалуйста Спасибо заранее

int main()
{

cv::VideoCapture input("/home/ubuntu/MyExamples/MD0/highway.avi");
cv::Mat img, img_prev0, img_prev, frame, mask, thresh, gray_img, out_frame;

cv::Ptr<cv::BackgroundSubtractorMOG2> bgsubtractor;
cv::BackgroundSubtractorMOG2( 10,  2.5,true);

input.read(img);
img.copyTo(img_prev0);
//convert to grayscale and set the first frame
cv::cvtColor(img_prev0, img_prev, CV_BGR2GRAY);
// Apply Gaussian blur filter
cv::GaussianBlur(img_prev, img_prev, cv::Size(7, 7), 0);

    cv::VideoWriter output("highwayMD.avi",CV_FOURCC('X','V','I','D'),30,cv::Size(input.get(CV_CAP_PROP_FRAME_WIDTH),input.get(CV_CAP_PROP_FRAME_HEIGHT)),0);

    while(input.read(frame)) 
        {
        //convert to grayscale
        cv::cvtColor(frame, gray_img, CV_BGR2GRAY);
        cv::GaussianBlur(gray_img, gray_img, cv::Size(7, 7), 0);

                //mog2
                bgsubtractor->operator()(gray_img, mask,-1);

        //cv::threshold(mask, thresh, 25, 255, cv::THRESH_BINARY);
        //cv::dilate(thresh, thresh, 0); // 0 is the rectangle structural element

        output.write(thresh);

        cv::putText(mask, "Motion Detected", cv::Point(10, 20), cv::FONT_HERSHEY_SIMPLEX, 0.75, cv::Scalar(255,255,255),2);

        cv::imshow("Camera", mask);
        if(cv::waitKey(1) == 27)
            {
            //exit if ESC is pressed
            break;
            }
        }
}

1 Ответ

0 голосов
/ 15 июля 2018

Для всех, кто сталкивался с такими проблемами, не смешивайте код, написанный в OpenCV 3, с OpenCV2. В моем коде ошибка возникает из-за использования указателя в 7-й строке. Правильно, он будет работать правильно

...