Метод разности кадров [вычитание фона]

Я пытаюсь реализовать метод разности кадров для выполнения вычитания фона. Проблема в том, когда я пытаюсь показать разницу кадров в окне. Я не получаю никакого вывода [черное окно]. Это код реализован

#include <highgui.h>
#include <iostream>
using namespace cv;

int main()
{

    VideoCapture cap("Camouflage/b%05d.bmp");
    if(!cap.isOpened())
    {
        std::cout<<"failed to open image sequence";
        return 1;
    }
    char c;
    Mat frame1, frame2, frame3;
    namedWindow("Original Frames",1);   
    namedWindow("Frame Difference",1);
    while(1)
    {
        cap>>frame1;
        if(frame1.empty())
        {
            std::cout<<"Frame1Message->End of sequence"<<std::endl;
            break;
        }
        cap>>frame2;
        if(frame2.empty())
        {
            std::cout<<"Frame2Message->End of sequence"<<std::endl;
            break;
        }
        //  absdiff(frame1,frame2,frame3);

        frame3=frame1.clone();
        frame3=frame3-frame2;
        //imwrite("C:/Users/hp/Desktop/file
        imshow("Frame Difference",frame3);
        c=waitKey(90);
        if(c==27)
            break;

        imshow("Original Frames",frame1);
        c=waitKey(90);
        if(c==27)           
            break;
    }
}

кто-нибудь может мне помочь?.. я застрял.

ОБНОВИТЬ

VideoCapture не работал для меня, поэтому я использовал cvCaptureЯ думал, что это не будет читать последовательность изображений, но это сработало. Это то, что я сделал

CvCapture* capture = cvCreateFileCapture("Camouflage/b%05d.bmp"); 

Имя изображения может быть любым, например, b00000, b00010, b00001 и т. Д.

1 ответ

Вы открываете файл bmp с помощью VideoCapture. Попробуйте видео, но захват 2 кадров без задержки между ними может вызвать некоторые проблемы.

Другие вопросы по тегам