주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

메모리에 데이터 기록하기

R2026b

이 예제는 이미지 데이터를 기록하고 기록된 데이터를 확인하는 방법을 보여줍니다.

데이터 미리보기

데이터를 기록하기 전에, ‘미리보기(PREVIEW)’ 함수를 사용하여 이미지 수집 장치에서 가져온 이미지를 실시간으로 미리 볼 수 있습니다. PREVIEW 함수를 호출하면 미리보기 창이 열립니다. 미리보기 창을 닫으려면 CLOSEPREVIEW 함수를 사용하십시오.

% Access an image acquisition device.
vidobj = videoinput('winvideo', 1);
% Open the preview window.
preview(vidobj)

단일 프레임 수집

단일 프레임을 수집하려면 GETSNAPSHOT 함수를 사용하십시오.

snapshot = getsnapshot(vidobj);
% Display the frame in a figure window.
imagesc(snapshot)

멀티프레임 수집

트리거 발생 시 기록할 프레임 수를 지정하려면, 비디오 입력 객체의 FramesPerTrigger 속성을 구성하십시오.

% Configure the number of frames to log upon triggering.
vidobj.FramesPerTrigger = 50;

데이터를 기록하려면 이미지 수집 객체가 실행 중이어야 합니다. 수집을 시작하려면 START 함수를 사용하십시오.

start(vidobj)
% Notice that the number of frames being logged to memory ...
numAvail = vidobj.FramesAvailable
numAvail =

     7

% ... is increasing ...
numAvail = vidobj.FramesAvailable
numAvail =

     14

% ... over time.
numAvail = vidobj.FramesAvailable
numAvail =

     21

메모리에서 기록된 데이터를 가져오려면, 비디오 입력 객체와 가져올 프레임 수를 지정하여 GETDATA 함수를 사용하십시오.

% Retrieve some of the logged frames.
imageData = getdata(vidobj, 30);
% Notice the number of frames remaining in memory.
numAvail = vidobj.FramesAvailable
numAvail =

     20

% Display the last frame extracted from memory.
imagesc(imageData(:,:,:,30))

% Wait for the acquisition to finish.
wait(vidobj);

데이터를 지속적으로 수집하려면 FramesPerTrigger 속성을 무한대로 설정하십시오. 트리거가 발생하면, 비디오 입력 객체의 실행이 중지될 때까지 데이터가 기록됩니다. 객체의 실행을 중지하려면 STOP 함수를 사용하십시오.

vidobj.FramesPerTrigger = inf;
% Initiate the acquisition.
start(vidobj)

% Notice the number of frames in memory.
numAvail = vidobj.FramesAvailable
numAvail =

     6

% Loop through till 10 frames are acquired
while(numAvail<=10)
    numAvail = vidobj.FramesAvailable;
end
% Stop the acquisition.
stop(vidobj)
% View the total number of frames that were logged before stopping.
numAcquired = vidobj.FramesAcquired;
numAcquired =

    10

% Retrieve all logged data.
imageData = getdata(vidobj, numAcquired);
% Display one of the logged frames.
imagesc(imageData(:,:,:,numAcquired))

기록된 데이터 보기.

메모리에서 데이터를 추출하지 않고 가장 최근에 기록된 이미지 데이터를 보려면, 비디오 입력 객체와 볼 프레임 수를 지정하여 PEEKDATA 함수를 사용하십시오. PEEKDATA를 사용하여 기록된 데이터를 확인하더라도 메모리에서 기록된 데이터가 삭제되지는 않습니다.

% Configure the number of frames to log upon triggering.
vidobj.FramesPerTrigger = 35;
% Initiate the acquisition.
start(vidobj)
% Wait for the acquisition to finish.
wait(vidobj, 3);
% Verify the number of frames logged to memory.
numAvail = vidobj.FramesAvailable
numAvail =

    35

% Access the logged data without extracting them from memory.
imageData = peekdata(vidobj, numAvail);
% Verify that all logged frames are still available in memory.
numFramesAvailable = vidobj.FramesAvailable
numFramesAvailable =

    35

비디오 입력 객체가 더 이상 필요하지 않으면 관련 변수를 삭제하고 지웁니다.

delete(vidobj)
clear vidobj