2016-07-12 2 views
-1

비디오 프레임을 캡처하고 각 프레임을 바탕 화면의 폴더에 이미지로 저장하고 싶습니다. 그러나 캡처하려는 특정 프레임 만 텍스트 문서로 작성됩니다.압축 해제 된 비디오 프레임을 이미지로 저장합니다.

내 질문은이 텍스트 문서에 저장된 프레임 번호를 읽고이 프레임 만 png 파일로 추출하는 방법입니다.

도움을 주셔서 감사합니다. 내가 무엇인가를 명확하게해야한다면, 물어보십시오.

frames = dlmread('Frames.txt'); 

%getting no of frames 
numFrames = mov.NumberOfFrames; 

%setting current status of number of frames written to zero 
numFramesWritten = 0; 

for t = frames: numFrames 
    currFrame = read(mov, t); %reading individual frames 
    opBaseFileName = sprintf('%3.3d.png', t); 
    opFullFileName = fullfile(opFolder, opBaseFileName); 
    imwrite(currFrame, opFullFileName, 'png'); %saving as 'png' file 
    progIndication = sprintf('Wrote frame %4d of %d.', t, numFrames); 
    disp(progIndication); 
    numFramesWritten = numFramesWritten + 1; 
end 
+0

? 텍스트 문서의 형식은 무엇입니까? – hbaderts

+0

수정하려는 코드는 모든 프레임을 png 파일로 추출하는 for 루프입니다. 위의 질문에 추가 할 것입니다. 텍스트 문서는 단순히 하나의 숫자 열입니다. 텍스트 문서에서 첫 번째 숫자로 시작하는 추출을 얻을 수 있지만 그 위에 하나씩 증가합니다. 나는이 숫자들을 정확히 어떻게 달릴 지 확신 할 수 없다. –

답변

0

나는 당신의 질문을 제대로 이해하고 :

가 ... 어떻게이 텍스트 문서에 저장된 프레임 번호에 읽습니까 만 PNG 파일이 장면을 추출?

와 '프레임'당신이해야 할 모든 당신이 원하는 프레임의 모든 인덱스의 일부를 포함하는 벡터라고 가정은 for 루프를 변경 당신이 이미 가지고 무슨 코드

for t = frames 
+0

다음과 같은 오류가 발생합니다 : "프레임 범위는 첫 번째 값이 두 번째 값보다 작거나 같은 프레임 인덱스의 1x2 벡터 여야합니다. 프레임 인덱스는 0보다 크고 작은 숫자 값이어야합니다 파일의 프레임 수보다 크거나 같아야합니다. " frames가 클래스 double 인 경우 Matlab에서 체크인 할 때 문제가 있습니까? 감사. –

+0

어떤 줄로 오류가 발생합니까? –

+0

이것은 비디오를 읽으려고 할 때 발생합니다. 'currFrame = read (mov, t); ' –

관련 문제