5
#include "cv.h"
#include "highgui.h"
int main(int argc, char** argv)
{
CvCapture* capture=0;
IplImage* frame=0;
capture = cvCaptureFromAVI("C:\\boy walking back.avi"); // read AVI video
if(!capture)
throw "Error when reading steam_avi";
cvNamedWindow("w", 1);
for(; ;)
{
/* int cvGrabFrame (CvCapture* capture);
IplImage* cvRetrieveFrame (CvCapture* capture)*/
frame = cvQueryFrame(capture);
if(!frame)
break;
cvShowImage("w", frame);
}
cvWaitKey(0); // key press to close window
cvDestroyWindow("w");
cvReleaseImage(&frame);
}
저는 VS2008에서 openCV를 사용하고 있습니다. 비디오 파일을 읽고 CV_CAP_PROP_FRAME_COUNT를 사용하여 4 초 길이의 비디오 클립에 대해 약 130 개의 프레임 수를 얻었습니다. 나는 5 개의 프레임 사이에 5 개의 프레임을 추가해야하므로 걷는 동작을 인식하고 있습니다. 신체의 움직임에는 거의 변화가 없습니다. 지금까지 비디오 클립의 한 프레임을 얻을 수있는 프로그램이 있습니다. 그러나, 나는 다른 프레임을 얻을 수 없습니다 또한, 나는 다른 모든 5 프레임을 얻는 방법에 대해 잘 모르겠습니다. 위 코드는 비디오의 한 프레임을 가져 오는 데 사용되는 코드입니다.OpenCV를 사용하여 .avi 비디오에서 프레임 가져 오기
감사 : 아래는 내가 이것을 입증하기 위해 쓴 작은 예입니다. 어리석은 것처럼 보이면 용서해주세요.하지만 OpenCV에 대해 상당히 새로운 것 같습니다. 코드가 실행되면 비디오 클립이 더 빠른 속도로 실행되었습니다. 물론 100 번에서부터 지연 시간을 조정하여 비디오 클립을 변경할 수 있습니다. 그러나 비디오의 5 프레임 중 1 프레임을 얻는 방법이 있습니까? 예를 들어, 코드의 출력은 사람의 움직임을 보여주는 프레임이됩니다. 지금까지 귀하의 도움에 너무 감사드립니다. –
그럼 X 프레임을 찾을 수 있는지 묻고 있습니까? X는 1에서 5까지의 프레임이 될 수 있습니까? – mevatron
5 프레임 중 아주 1 프레임을 추출 할 수있었습니다. 도와 주셔서 감사합니다 :) 이제 마스크 이미지를 만들거나 비디오의 프레임 이미지를 복사하려고합니다. 내가 뭘 하려는지 보여주기 위해 2 개의 이미지를 업로드하고 싶지만 아직 명성이 10 가지가 아닙니다 :/사용할 openCV 기능에 대해 계속 알려 주실 수 있습니까? –