이 페이지는 기계 번역을 사용하여 번역되었습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
Optical Flow를 사용한 라이브 모션 감지
이 예제에서는 광학 흐름 기술을 사용하여 동작을 감지하는 비디오 알고리즘을 만드는 방법을 보여줍니다. 이 예제에서는 Computer Vision Toolbox™ System object™와 함께 Image Acquisition Toolbox™ System object를 사용합니다.
소개
이 예제에서는 라이브 비디오에서 동작을 감지하기 위해 이미지 수집 장치에서 이미지를 스트리밍합니다. 라이브 비디오 시퀀스의 각 프레임에서 모션 벡터를 추정하기 위해 광학 흐름 추정 기술을 사용합니다. 동작 벡터가 결정되면 비디오 시퀀스에서 움직이는 객체 위에 그 동작을 그립니다.
초기화
비디오 장치 System object를 생성합니다.
vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_320x240', ... 'ReturnedColorSpace', 'rgb', ... 'DeviceProperties.Brightness', 130, ... 'DeviceProperties.Sharpness', 50);
광학 흐름을 사용하여 한 비디오 프레임에서 다른 프레임으로의 객체 이동 방향과 속도를 추정하는 System object를 생성합니다.
opticFlow = opticalFlowHS;
스트림 수집 및 처리 루프
입력 비디오에서 동작 감지를 수행하기 위한 처리 루프를 생성합니다. 이 루프는 위에서 인스턴스화한 System object를 사용합니다.
% Set up for stream nFrames = 0; while (nFrames<100) % Process for the first 100 frames. % Acquire single frame from imaging device. frameRGB = vidDevice(); % Compute the optical flow for that particular frame. flow = estimateFlow(opticFlow,rgb2gray(frameRGB)); imshow(frameRGB) hold on plot(flow,'DecimationFactor',[5 5],'ScaleFactor',25) hold off % Increment frame count nFrames = nFrames + 1; end

요약
그림 창에서 예제가 검은색 파일의 움직임을 감지한 것을 볼 수 있습니다. 움직이는 물체는 이미지에서 볼 수 있듯이 벡터장선을 사용하여 표현됩니다.
릴리스
여기서는 System object의 release 메서드를 호출하여 열려 있는 모든 파일과 장치를 닫습니다.
release(vidDevice);