3

まず最初に、私の下手な英語を許してください。私はその中で働いています。

私はコンピュータービジョンアプリケーションで働いています。ウェブカメラを使用しています。メインループは次のようになります。

  while true
     get frame
     process frame
     show frame in figure
  end while

そして、私はこのようなものが欲しい:

 while figure is open
     get frame
     process frame
     show frame in figure
  end while

以前は、フレームのプロットに figure と imshow を使用し、ユーザーが Figure をいつ閉じたかを知るためにハンドラーを使用していました。

fig = figure;
set(fig,'KeyPressFcn','exit = true;');
set(fig,'CloseRequestFcn', 'exit = true; delete(gcf)');

しかし、今は Computer System Toolbox の vision.VideoPlayer を使用しています。より高速であり、同様の方法を見つけることができません。GUIを使いたくない。

コードはこれです(この他のスレッドから):

vid = videoinput('winvideo', 1, 'RGB24_320x240'); %select input device

hvpc = vision.VideoPlayer;   %create video player object

src = getselectedsource(vid);
vid.FramesPerTrigger =1;
vid.TriggerRepeat = Inf;
vid.ReturnedColorspace = 'rgb';
src.FrameRate = '30';
start(vid)

%start main loop for image acquisition
for t=1:500
  imgO=getdata(vid,1,'uint8');    %get image from camera
  hvpc.step(imgO);    %see current image in player
end

アイデア?

4

1 に答える 1