www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I4_07_1_optflow_webcam_class.m
%% 僐儞僺儏乕僞價僕儑儞僨儌丗 % 僙僋僔儑儞幚峴 clear; close all; clc; imaqreset; clear videooptflowlines; % 價僨僆僇儊儔偺弶婜愝掕(僆僽僕僃僋僩嶌惉) [堦峴] % (Image Acquisition Toolbox偺僔僗僥儉僆僽僕僃僋僩) hVideo = imaq.VideoDevice('winvideo', 1, 'RGB24_640x480', 'ReturnedDataType','uint8'); %% 僆僾僥傿僇儖僼儘乕専弌偺僆僽僕僃僋僩傪嶌惉 opticFlow = opticalFlowLK; plotScaleFactor = 10; % PC偺夋柺偵價僨僆傪昞帵偡傞價儏乕儚偺嶌惉 viewer = vision.DeployableVideoPlayer; %viewer = vision.VideoPlayer; % 僼儗乕儉儗乕僩寁嶼梡偵僞僀儅乕傪僗僞乕僩 fps = single(0.0);cnt = 1;tic; % Stop 儃僞儞昞帵 a=true; sz = get(0,'ScreenSize'); figure('MenuBar','none','Toolbar','none','Position',[20 sz(4)-100 100 70]) uicontrol('Style', 'pushbutton', 'String', 'Stop',... 'Position', [20 20 80 40],... 'Callback', 'a=false;'); %% 擖椡摦夋憸傪1僼儗乕儉偢偮張棟偡傞儖乕僾 while (a) frame = step(hVideo); % 僇儊儔偐傜1僼儗乕儉庢崬 gFrame = rgb2gray(frame); % 僌儗乕僗働乕儖傊曄姺 flow = estimateFlow(opticFlow, gFrame); % 僆僾僥傿僇儖僼儘乕寁嶼 lines = videooptflowlines(flow.Vx + i * flow.Vy, plotScaleFactor); % 儀僋僩儖偺巒揰廔揰偺寁嶼 (5x5 僺僋僙儖偛偲) % 寢壥偺忋彂偒 frame1 = insertShape(frame, 'Line', lines, 'Color','red', 'SmoothEdges',false); frame2 = insertText(frame1, [50 50], ['Running at ' num2str(fps) 'fps'], 'FontSize',30, 'TextColor','green', 'BoxOpacity', 0); step(viewer,frame2); % 夋柺僼儗乕儉峏怴 % 20僼儗乕儉偺強梫帪娫偐傜僼儗乕儉儗乕僩傪寁嶼 cnt = cnt + 1; if (mod(cnt,20) == 0) t = toc; fps = single(20/t); tic; end drawnow limitrate; % 儃僞儞偺峏怴傪丄20 僼儗乕儉/昩偵惂尷 end clear videooptflowlines; %to clear persistent variables. release(hVideo); release(viewer); %% [廔椆] Figure忋偺Stop儃僞儞偱廔椆 %% 師偵墳梡椺偺屼徯夘 %% [嶲峫] %摦夋偱摦偐偡椺乯hVideo = imaq.VideoDevice偺戙傢傝偵埲壓傪巊梡 % hVideo = vision.VideoFileReader('visiontraffic.avi', 'PlayCount', inf); %暿偺僆僾僥傿僇儖僼儘乕傾儖僑儕僘儉偺椺 % opticFlow = opticalFlowHS; plotScaleFactor = 200; % opticFlow = opticalFlowFarneback; plotScaleFactor = 2; %% Copyright 2013-2014 The MathWorks, Inc.