2013-01-18 2 views
-2

여기에서 뭘하고 싶은지는 비디오를로드하고 비디오가 재생되는 동안 프레임을 캡처하여 새 창에 출력하는 것입니다. 이것은 아래 코드가 수행하는 것입니다.블러, 임계 값, 부드러운 모서리 캡처

하지만 캡쳐 된 프레임에 흐림 효과를 추가하고 임계 값 전후의 가장자리를 부드럽게 처리하여 다음 단계로 가져 가고 싶습니다.

#include<opencv\cv.h> 
#include<opencv\highgui.h> 
#include<opencv\ml.h> 
#include<opencv\cxcore.h> 
#include<fstream> 



int main(int argc, char** argv) { 
//Main Window 
    cvNamedWindow("DisplayVideo", CV_WINDOW_AUTOSIZE); 
    CvCapture* capture = cvCreateFileCapture(argv[1]); //Video captured and stored in CAPTURE 
    IplImage* frame; //Image captured and stored in FRAME 

int num=0; 
char s [20]; 

while(1) { 
    num++; 
    frame = cvQueryFrame(capture); 
     if(!frame) break; 
     cvShowImage("DisplayVideo", frame); 
     char c = cvWaitKey(33); 
     if(c == 27) break; 
     if (c == 'f') 
      { 
      sprintf(s,"frame%d.jpg",num); 
      cvSaveImage(s,frame); 
      cvNamedWindow("FrameWindow", 0); 
      cvShowImage("FrameWindow",frame); 
      } 
     } 



cvReleaseCapture(&capture); 
cvDestroyWindow("DisplayVideo"); 
} 
+2

귀하의 질문은 무엇입니까? – Smash

답변

1

함수 cvQueryFrame는 카메라 또는 비디오 파일에서 프레임을 잡고 은 압축 해제 돌려줍니다. 이 함수는 한 번의 호출로 cvGrabFrame과 cvRetrieveFrame을 조합 한 것입니다. 반환 된 이미지는 사용자가 게시하거나 수정할 수 없습니다.

먼저 프레임을 제어 할 수있는 메모리 장소에 복사하려고합니다.

IplImage* img; 
cvCopyImage(frame,img); 

cvSmooth(img,img,...); 
cvThreshold(img,img,...); 

... 
cvReleseImage(&img); 

cvSmooth IS 흐림. 다듬기와 흐림 사이에 어떤 차이가 있는지 잘 모르겠습니다. 수행 할 수있는 다른 이미지 작업에 대한 OpenCV C 참조를 확인하십시오.