2014-03-05 4 views
0

배경 차감을 수행하기 위해 프레임 차이 방법을 구현하려고합니다. 문제는 창에 프레임 차이를 표시하려고 할 때입니다. 나는 어떤 출력 [흑색 창]을 얻는다. 이것은 구현 된 코드이다프레임 차이 방법 [배경 뺄셈]

#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; 
    } 
} 

누군가 나를 도와 줄 수 있냐? .. 나는 찔 렸다.

UPDATE

.I이 늘 이미지의 순서를 읽을 수 있지만이 worked.This 생각

VideoCapture 날 그래서 난 cvCapture 사용을 위해 내가 무슨 짓을 작동하지 않았다

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

이미지 이름 b00000, b00010, b00001 등이 될 수 있습니다.

+0

프레임 3의 값이 매우 작을 수 있습니다. 시도하십시오 imshow ("프레임 차이", frame3 * 100); – berak

+0

방금 ​​해봤습니다. 동일한 출력을 얻는 것. –

답변

0

VideoCapture로 bmp 파일을 여는 중입니다. 비디오를 시도해보십시오. 그 사이에 지연없이 2 프레임을 캡처하면 몇 가지 문제가 발생할 수 있습니다.

+0

프레임 단위로 읽은 이미지 시퀀스를 읽는 중. 어쨌든 비디오와 함께 작동하지 않습니다. –