Pergunta

Eu sou um novato MATLAB e eu gostaria de saber como posso adquirir e salvar 20 imagens em intervalos de 5 segundos da minha câmera. Muito obrigado.

Foi útil?

Solução

Para adquirir a imagem, faz a câmera vem com alguma forma documentada para controlá-lo a partir de um computador? MATLAB suportes que ligam a bibliotecas fora . Ou você pode comprar a caixa de ferramentas MATLAB adequado, como sugerido por MatlabDoug.

Para salvar a imagem, IMWRITE é provavelmente a opção mais fácil.

Para repetir a ação, um simples FOR loop com um PAUSA lhe dará mais ou menos o que você quer com muito pouco trabalho:

 for ctr = 1:20
   img = AcquireImage(); % your function goes here
   fname = ['Image' num2str(ctr)]; % make a file name
   imwrite(img, fname, 'TIFF');
   pause(5); % or whatever number suits your needs
 end

Se, no entanto, é necessário exigir intervalos de 5 segundos, você vai ter que mergulhar em Contador s. Aqui está um exemplo simples:

function AcquireAndSave
  persistent FileNum;
  if isempty(FileNum)
    FileNum = 1;
  end
  img = AcquireImage();
  fname = ['Image' num2str(FileNum)];
  imwrite(img, fname, 'TIFF');
  disp(['Just saved image ' fname]);
  FileNum = FileNum + 1;
end

>> t = timer('TimerFcn', 'ShowTime', 'Period', 5.0, 'ExecutionMode', 'fixedRate');
>> start(t); 
...you should see the disp line from AcquireAndSave repeat every 5 seconds...
>> stop(t);
>> delete(t);

Outras dicas

Primeiro construir uma interface de entrada de vídeo

vid = videoinput('winvideo',1,'RGB24_400x300');

Você vai precisar ajustar o último pedaço de sua webcam. Para encontrar uma lista de dispositivos de webcam (e outras coisas além) use:

imaqhwinfo

A seguir faz a primeira webcam em um objeto

a=imaqhwinfo('winvideo',1)

Encontre a lista de formatos de vídeo suportados com

a.SupportedFormats

Em seguida, você deseja iniciar a interface:

start(vid);
preview(vid);

Agora você pode fazer o seguinte:

pics=cell(1,20)
for i=1:20
   pause(5);
   pics{i}=getsnapshot(vid);
end

Ou, como outros comentadores notaram, você também pode usar um timer Matlab para o intervalo.

Se você deseja capturar imagens com um intervalo consideravelmente mais curto (1 ou mais por segundo), pode ser mais útil considerar a webcam como uma fonte de vídeo. Eu deixei uma resposta à este pergunta que estabelece métodos para conseguir isso.

Existem várias maneiras de fazer isto, cada um com vantagens e desvantagens. Com base nas informações que você postou até agora, aqui está como eu faria isso:

vid = videoinput('dcam', 1'); % Change for your hardware of course.
vid.FramesPerTrigger = 20;
vid.TriggerRepeat = inf;
triggerconfig(vid, 'manual');
vid.TimerFcn = 'trigger(vid)';
vid.TimerPeriod = 5;
start(vid);

Este irá adquirir 20 imagens a cada cinco segundos até que você chamar STOP. Você pode alterar o parâmetro TriggerRepeat às mudanças quantas vezes aquisição irá ocorrer.

Isto, obviamente, não faz qualquer processamento nas imagens depois de serem adquiridas.

Aqui está um rápido tutorial sobre como obter uma imagem http: //www.mathworks. com / products / IMAQ / description5.html você obteve esse tipo de coisa para o trabalho ainda?

EDIT:

Agora que você pode obter uma imagem, você deseja obter vinte. Um objeto temporizador ou um simples loop for é o que você vai precisar.

exemplo simples temporizador objeto

exemplo Vídeo de temporizadores em MATLAB

Certifique-se de definir as "tarefas a executar" campo a vinte. Além disso, você deve encerrar todo o código que você tem para uma imagem encaixar em uma única função.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top